MySQL的事務控制(二)
1. MySQL 通過 SET AUTOCOMMIT,START TRANSACTION ,COMMIT ,ROLLBACK 等語句支援本地事務。
2. 語法格式:
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [ [NO ] RELEASE ]
SET AUTOCOMMIT = {0/1}
3. 預設情況下,MySQL是自動提交的(Autocommit)的
4. 如果需要通過明確的Commit 和 Rollback 來提交和回滾事務,那麼就需要通過明確的事務控制命令來開始事務。
注意:這和ORACLE的事務管理有明細區別。
5. START TRANSACTION 或 BEGIN 語句可以開始一項新的事務。
6. COMMIT 和ROLLBACK 用來提交或者回滾事務。
7. CHAIN 和 RELEASE 子句分別用來定義在事務提交或者回滾之後的操作
CHAIN會立即啟動一個新事務,並且和剛才的事務具有相同的隔離級別
RELEASE 則會斷開和客戶端的連線。
8. SET AUTOCOMMIT 可以修改當前連線的提交方式,如果設定了SET AUTOCOMMIT=0 ,則設定之後的所有事務都需要通過明確的命令進行提交或者回滾。
注意:
(1) 如果只是對某些語句需要進行事務控制,則使用START TRANSACTION 語句開始一個事務比較方便,這樣事務結束之後可以自動回到自動提交的方式。
(2) 如果希望所有的事務都不是自動提交的,那麼通過修改AUTOCOMMIT 來控制事務比較方便,這樣不用再每個事務開始的時候再執行STRAT TRANSACTION 語句
示例:
mysql > start transaction;
mysql > insert into actor(actor_id,first_name,last_name) values(12,'Tom','lisa');
mysql> commit; (完成提交) 或者用 commit and chain (完成本次提交,並開啟一個新的事務)