mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
http://yulei568.blog.163.com/blog/static/135886720071012444422/
?
MyISAM不支持
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關(guān)鍵詞被支持,用于COMMIT和RELEASE,與CHAIN和RELEASE子句。CHAIN和RELEASE可以被用于對事務完成進行附加控制。Completion_type系統(tǒng)變量的值決定了默認完成的性質(zhì)。請參見5.3.3節(jié),“服務器系統(tǒng)變量”。
AND CHAIN子句會在當前事務結(jié)束時,立刻啟動一個新事務,并且新事務與剛結(jié)束的事務有相同的隔離等級。RELEASE子句在終止了當前事務后,會讓服務器斷開與當前客戶端的連接。包含NO關(guān)鍵詞可以抑制CHAIN或RELEASE完成。如果completion_type系統(tǒng)變量被設(shè)置為一定的值,使連鎖或釋放完成可以默認進行,此時NO關(guān)鍵詞有用。
默認情況下,MySQL采用autocommit模式運行。這意味著,當您執(zhí)行一個用于更新(修改)表的語句之后,MySQL立刻把更新存儲到磁盤中。
如果您正在使用一個事務安全型的存儲引擎(如InnoDB, BDB或NDB簇),則您可以使用以下語句禁用autocommit模式:
SET AUTOCOMMIT=0;通過把AUTOCOMMIT變量設(shè)置為零,禁用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結(jié)束事務為止。然后autocommit模式恢復到原來的狀態(tài)。
BEGIN和BEGIN WORK被作為START TRANSACTION的別名受到支持,用于對事務進行初始化。
轉(zhuǎn)載于:https://my.oschina.net/wzzz/blog/530191
總結(jié)
以上是生活随笔為你收集整理的mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 说一下StoreBoard和纯代码编程各
- 下一篇: RPM方式安装MySQL5.6和wind