事務處理用來維護數據庫等完整性,保證mysql操作要麼成功,要麼失敗(myisam不支持事務)
1、關鍵詞
- 事務(transaction)指一組SQL語句;
- 回退(rollback)指撤銷指定SQL語句的過程;
- 提交(commit)指將未存儲的SQL語句結果寫入數據庫表;
- 保留點(savepoint)指事務處理中設置的臨時佔位符(place-holder),你可以對它發佈回退(與回退整個事務處理不同)。
2、使用rollback
select * from orderitems;
START TRANSACTION;
DELETE FROM orderitems;
select * from orderitems;
ROLLBACK;
select * from orderitems;
3、使用commit
START TRANSACTION;
DELETE FROM orderitems where order_num = 20010;
DELETE FROM orders WHERE order_num = 20010;
COMMIT
假設第二條刪除失敗,回滾,撤銷事務處理塊內的語句
4、使用保留點
複雜的事務處理可能需要部分提交或回退。
爲了支持回退部分事務處理,必須能在事務處理塊中合適的位置放 置佔位符。這樣,如果需要回退,可以回退到某個佔位符。
這些佔位符稱爲保留點。爲了創建佔位符,可如下使用SAVEPOINT
創建保留點
SAVEPOINT delete1
回退到保留點
ROLLBACK TO delete1
tips
保留點越多越好,方便靈活使用,but沒必要到就算來哈!凡事適可而止
釋放保留點
- 保留點在事務處理完成(執行一條ROLLBACK或 COMMIT)後自動釋放
-
release savepoint delete1
明確釋放保留點
5、更改默認到提交行爲
mysql是自動提交所有更改。
不自動提交更改
set autocommit = 0;