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是沒有用的。