1. 程式人生 > >mysql 事務 回滾

mysql 事務 回滾

事務的四個特性ACID,原子性,一致性,隔離性,永續性,

開始一個事務:

->begin;或者start transaction;

->sql語句

->savepoint identifier,(建立一個儲存點)

->commit;或者rollback;

Question:如果rollback沒有生效,

1.請檢視你的儲存引擎  show variables like '%storage_engine%';

2.檢視你的表的引擎show create table 表名;

有些引擎並不支援事務,

3.檢視你的mysql提供了哪些引擎:show variables like '%engine%';'

最好選擇InnoDB吧

ps:我遇到一次rollback就是不起做喲,最後退出mysql終端命令列,然後重新連線之後又嘗試了一次rollback就生效了(emmm..)

所以以後可以重啟mysql或者重新連線mysql試試。

--------------------------------------------------------

set autocommit=0和start transaction的區別(轉載地址

autocommit為0,(不知道autocommit=OFF應該是同一個意思吧)是指事務非自動提交,自此句執行以後,每個SQL語句或者語句塊所在的事務都需要顯示"commit"才能提交事務。

1.不管autocommit為0或者1,start transaction之後,只有當commit之後資料才會生效,rollback之後會回滾。

2.當autocommit為0時,不管有沒有start transaction,只有當commit之後資料才會生效,rollback之後會回滾。

3.當autocommit=1,並且沒有start transaction,呼叫rollback是沒有用的。