mysql筆記26:事務處理
阿新 • • 發佈:2022-02-22
首先,MYISAM引擎不支援事務處理,但是InnoDB引擎支援。
事務處理是為了防止故障,保證過程執行的原子性。
術語:
- 事務(transaction): 一組sql語句
- 回退(rollback):撤銷指定sql語句的過程
- 提交(commit): 將未儲存的sql語句寫入資料庫
- 保留點(savepoint): 事務處理設定的臨時佔位符,可以對它釋出回退
26.2 控制事務處理
- 事務開始:
start transaction; - 使用rollback例子:
select * from ordertotals;
start transaction;
delete from ordertotals;
select * from ordertotals;
rollback;
select * from ordertotals; - commit
在事務處理塊裡面,提交是不會隱含進行的。必須手動明確地提交;
例子:
start transaction;
delete from orderitems where order_num = 20010;
delete from orders where order_num = 20010;
commit;
在start transtaction和commit之間的語句,並不會被隱式提交,而是隻有到了commit才會一次性提交,保證了原子性
隱含事務關閉:在commit和rollback之後,事務隱式地結束
26.3 複雜的事務控制
簡單的rollback和commit就能夠寫入和撤銷整個事務處理,但更復雜的情況需要使用保留點,建立保留點的語句為:
savepoint delete1;
回退到某個保留點。
rollback delete1;
保留點在rollback和commit後自動釋放