MySQL通過set autocommit、start transaction、commit、rollback 等語句支援本地事務。
預設情況下,MySQL是自動送出的(autocommit)的,如果需要明确的commit和rollback來送出和復原事務,那麼就需要明确的事務控制指令來開始事務,這是和Oracle的事務管理明顯不同的地方。
session_1 | session_2 |
檢視表 t11 的資料: select * from t11 ![]() | 檢視表 t11 的資料: select * from t11 |
用start transaction 指令啟動事務,往表 t11 中插入一條資料,沒有 commit: start transaction; INSERT INTO t11 VALUES(125.0,125.0); | |
檢視表 t11 的資料,發現沒有插入的資料: select * from t11 | |
執行送出: commit; | |
再次查詢 表 t11 , 可以查詢到session_1 插入的資料: select * from t11 | |
下面這個事務是自動送出的: INSERT INTO t11 VALUES(200.0,200.0); | |
由于是自動送出的,現在可以立刻查詢到session_1 剛才插入的資料: |