1. 程式人生 > >MySQL的事務控制(二)

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 (完成本次提交,並開啟一個新的事務)