MySQL 的 autocommit

FrankYou發表於2019-04-11

在自動提交模式(autocommit=ON)下提交事務:

•在自動提交模式下,每個SQL語句都是一個獨立的事務。

–mysql>insert into ACCOUNTS values(1,'Tom',1000);

•MySQL會自動提交這個事務,這意味著向ACCOUNTS表中新插入的記錄會永久儲存在資料庫中。

–mysql>select * from ACCOUNTS;

•這條select語句會查詢到ID為1的ACCOUNTS記錄。這表明在第一個mysql.exe程式中插入的ACCOUNTS記錄被永久儲存,這體現了事務的ACID特性中的永續性。

 

在手工模式下(autocommit=OFF)提交事務:

•在手工提交模式下,必須顯式指定事務開始邊界和結束邊界:

–事務的開始邊界:begin

–提交事務:commit

–撤銷事務:rollback

例:

–mysql>begin;
–mysql>select * from ACCOUNTS;
–mysql>commit;

在手工提交模式下,一個事務結束的標誌為提交事務或者撤銷事務。 

MySQL預設的儲存引擎是MyISAM,MyISAM儲存引擎不支援事務處理,所以改變autocommit沒有什麼作用。但不會報錯,所以要使用事務處理的童鞋一定要確定你所操作的表示支援事務處理的,如InnoDB。如果不知道表的儲存引擎可以通過檢視建表語句檢視建表的時候有沒有指定事務型別的儲存引擎,如果沒有指定儲存引擎預設則是MyISAM不支援事務的儲存引擎。

 

相關文章收集:

https://www.cnblogs.com/edwardlost/archive/2012/03/13/2394312.html

https://blog.csdn.net/aitangyong/article/details/50481161

相關文章