天天看點

MySQL中的事務控制(一)start transaction

MySQL通過set autocommit、start transaction、commit、rollback 等語句支援本地事務。

預設情況下,MySQL是自動送出的(autocommit)的,如果需要明确的commit和rollback來送出和復原事務,那麼就需要明确的事務控制指令來開始事務,這是和Oracle的事務管理明顯不同的地方。

一個start transaction的例子

session_1   session_2

檢視表 t11 的資料:

select * from t11

MySQL中的事務控制(一)start transaction

檢視表 t11 的資料:

select * from t11

MySQL中的事務控制(一)start transaction

 用start transaction 指令啟動事務,往表 t11 中插入一條資料,沒有 commit:

start transaction;

INSERT INTO t11 VALUES(125.0,125.0);

檢視表 t11 的資料,發現沒有插入的資料:

select * from t11

MySQL中的事務控制(一)start transaction

 執行送出:

commit;

MySQL中的事務控制(一)start transaction

 再次查詢 表 t11 , 可以查詢到session_1 插入的資料:

select * from t11

MySQL中的事務控制(一)start transaction

 下面這個事務是自動送出的:

INSERT INTO t11 VALUES(200.0,200.0);

MySQL中的事務控制(一)start transaction
 由于是自動送出的,現在可以立刻查詢到session_1 剛才插入的資料:
MySQL中的事務控制(一)start transaction
MySQL中的事務控制(一)start transaction