最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql 鎖表鎖行語句分享(MySQL事務處理)

 更新時間:2011年09月16日 16:44:58   作者:  
下面這個語句是鎖定一行數據,開始讀取,一直到刪除后都不會有第二個人也讀到這條數據

復制代碼 代碼如下:

mysql_query("set autocommit=0");
$list_one = $db->fetch_first("select * from prizes where id = ".$id." FOR UPDATE");
$db->query("DELETE from prizes WHERE id =".$list_one['id']);
mysql_query("commit");


START TRANSACTION, COMMIT和ROLLBACK語法
復制代碼 代碼如下:

START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {0 | 1}

START TRANSACTION或BEGIN語句可以開始一項新的事務。COMMIT可以提交當前事務,是變更成為永久變更。ROLLBACK可以 回滾當前事務,取消其變更。SET AUTOCOMMIT語句可以禁用或啟用默認的autocommit模式,用于當前連接。
自選的WORK關鍵詞被支持,用于COMMIT和RELEASE,與CHAIN和RELEASE子句。CHAIN和RELEASE可以被用于對事務完成進行附加控制。Completion_type系統(tǒng)變量的值決定了默認完成的性質。
AND CHAIN子句會在當前事務結束時,立刻啟動一個新事務,并且新事務與剛結束的事務有相同的隔離等級。RELEASE子句在終止了當前事務后,會讓服務器斷開與當前客戶端的連接。包含NO關鍵詞可以抑制CHAIN或RELEASE完成。如果completion_type系統(tǒng)變量被設置為一定的值,使連鎖或釋放完成可以默認進行,此時NO關鍵詞有用。
默認情況下,MySQL采用autocommit模式運行。這意味著,當您執(zhí)行一個用于更新(修改)表的語句之后,MySQL立刻把更新存儲到磁盤中。
如果您正在使用一個事務安全型的存儲引擎(如InnoDB, BDB或NDB簇),則您可以使用以下語句禁用autocommit模式:
SET AUTOCOMMIT=0;
通過把AUTOCOMMIT變量設置為零,禁用autocommit模式之后,您必須使用COMMIT把變更存儲到磁盤中,或著如果您想要忽略從事務開始進行以來做出的變更,使用ROLLBACK。
如果您想要對于一個單一系列的語句禁用autocommit模式,則您可以使用START TRANSACTION語句:
復制代碼 代碼如下:

START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;

使用START TRANSACTION,autocommit仍然被禁用,直到您使用COMMIT或ROLLBACK結束事務為止。然后autocommit模式恢復到原來的狀態(tài)。
BEGIN和BEGIN WORK被作為START TRANSACTION的別名受到支持,用于對事務進行初始化。START TRANSACTION是標準的SQL語法,并且是啟動一個ad-hoc事務的推薦方法。BEGIN語句與BEGIN關鍵詞的使用不同。BEGIN關鍵詞可以啟動一個BEGIN...END復合語句。后者不會開始一項事務。
您也可以按照如下方法開始一項事務:
START TRANSACTION WITH CONSISTENT SNAPSHOT;
WITH CONSISTENT SNAPSHOT子句用于啟動一個一致的讀取,用于具有此類功能的存儲引擎。目前,該子句只適用于InnoDB。該子句的效果與發(fā)布一個START TRANSACTION,后面跟一個來自任何InnoDB表的SELECT的效果一樣。請參見15.2.10.4節(jié),“一致的非鎖定讀”。
開始一項事務會造成一個隱含的UNLOCK TABLES被執(zhí)行。
為了獲得最好的結果,事務應只使用由單一事務存儲引擎管理的表執(zhí)行。否則,會出現(xiàn)以下問題:
如果您使用的表來自多個事務安全型存儲引擎(例如InnoDB和BDB),并且事務隔離等級不是SERIALIZABLE,則有可能當一個事務提交時,其它正在進行中的、使用同樣的表的事務將只會發(fā)生由第一個事務產生的變更。也就是,用混合引擎不能保證事務的原子性,并會造成不一致。(如果混合引擎事務不經常有,則您可以根據需要使用SET TRANSACTION ISOLATION LEVEL把隔離等級設置到SERIALIZABLE。)
如果您在事務中使用非事務安全型表,則對這些表的任何變更被立刻存儲,不論autocommit模式的狀態(tài)如何。
如果您在更新了事務中一個事務表之后,發(fā)布一個ROLLBACK語句,則會出現(xiàn)一個ER_WARNING_NOT_COMPLETE_ROLLBACK警告。對事務安全型表的變更被 回滾,但是對非事務安全型表沒有變更。
每個事務被存儲在一個組塊中的二進制日志中,在COMMIT之上。被回滾的事務不被計入日志。(例外情況:對非事務表的更改不會被 回滾。如果一個被回滾的事務包括對非事務表的更改,則整個事務使用一個在末端的ROLLBACK語句計入日志,以確保對這些表的更改進行復制。)
您可以使用SET TRANSACTION ISOLATION LEVEL更改事務的隔離等級。
回滾可以慢速運行。在用戶沒有明確要求時,也可以進行回滾(例如,當錯誤發(fā)生時)。因此,在明確地和隱含的(ROLLBACK SQL命令)回滾時,SHOW PROCESSLIST會在Stage列中顯示Rolling back,用于連接。

相關文章

  • MySQL為什么臨時表可以重名

    MySQL為什么臨時表可以重名

    本文主要介紹了MySQL為什么臨時表可以重名,有的人可能會認為,臨時表就是內存表,其實是完全不同的,感興趣的可以一起來了解一下
    2022-03-03
  • mysql存儲過程之創(chuàng)建(CREATE PROCEDURE)和調用(CALL)及變量創(chuàng)建(DECLARE)和賦值(SET)操作方法

    mysql存儲過程之創(chuàng)建(CREATE PROCEDURE)和調用(CALL)及變量創(chuàng)建(DECLARE)和賦值(SET

    這篇文章主要介紹了mysql存儲過程之創(chuàng)建(CREATE PROCEDURE)和調用(CALL)及變量創(chuàng)建(DECLARE)和賦值(SET)操作方法,結合實例形式較為詳細的分析了mysql存儲過程創(chuàng)建、調用及變量創(chuàng)建、賦值具體原理、操作技巧與相關注意事項,需要的朋友可以參考下
    2019-12-12
  • mysql 不等于 符號寫法

    mysql 不等于 符號寫法

    今天在寫sql語句的時候,想確認下mysql的不等于運算符是用什么符號表示的
    2013-08-08
  • MySQL如何刪除mysql數據表內的重復數據

    MySQL如何刪除mysql數據表內的重復數據

    這篇文章主要介紹了MySQL如何刪除mysql數據表內的重復數據問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • MySQL的事件調度器使用介紹

    MySQL的事件調度器使用介紹

    這篇文章主要介紹了MySQL的事件調度器使用介紹,本文講解了事件調度器的開啟、創(chuàng)建、修改、刪除等操作的使用實例,需要的朋友可以參考下
    2015-06-06
  • MySQL判斷列的值既不為NULL又不為空字符串的問題

    MySQL判斷列的值既不為NULL又不為空字符串的問題

    這篇文章主要介紹了MySQL判斷列的值既不為NULL又不為空字符串的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • mysql非主鍵自增長用法實例分析

    mysql非主鍵自增長用法實例分析

    這篇文章主要介紹了mysql非主鍵自增長用法,結合實例形式分析了MySQL非主鍵自增長的基本設置、使用方法與操作注意事項,需要的朋友可以參考下
    2020-02-02
  • 詳解在MySQL中創(chuàng)建表的教程

    詳解在MySQL中創(chuàng)建表的教程

    這篇文章主要介紹了詳解在MySQL中創(chuàng)建表的教程,是MySQL入門學習中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • MySQL的源碼安裝及使用UDFs進行數據自動更新的教程

    MySQL的源碼安裝及使用UDFs進行數據自動更新的教程

    UDFs即是MySQL的用戶自定義函數的縮寫,配合觸發(fā)器可以自動更新Memcached與MySql的數據,這里我們就來總結一下MySQL的源碼安裝及使用UDFs進行數據自動更新的教程:
    2016-07-07
  • MySQL使用C語言連接完整代碼樣例

    MySQL使用C語言連接完整代碼樣例

    這篇文章主要介紹了如何使用C語言連接MySQL數據庫,包括安裝MySQL連接庫、初始化MySQL、連接數據庫、執(zhí)行SQL查詢、獲取查詢結果、關閉連接等步驟,并提供了完整的代碼示例,需要的朋友可以參考下
    2025-03-03

最新評論

银川市| 克什克腾旗| 若羌县| 曲阳县| 炎陵县| 华阴市| 金寨县| 北碚区| 石林| 永济市| 杭州市| 巢湖市| 镇平县| 浮梁县| 闽清县| 依兰县| 龙井市| 静安区| 诸暨市| 丹阳市| 平乡县| 乃东县| 彭山县| 无为县| 佛学| 西昌市| 常宁市| 辽中县| 祁连县| 龙陵县| 资源县| 南汇区| 邢台县| 曲靖市| 京山县| 循化| 高青县| 蒙城县| 乌鲁木齐县| 邮箱| 岚皋县|