1. 程式人生 > 其它 >mysql筆記26:事務處理

mysql筆記26:事務處理

首先,MYISAM引擎不支援事務處理,但是InnoDB引擎支援。

事務處理是為了防止故障,保證過程執行的原子性。
術語:

  • 事務(transaction): 一組sql語句
  • 回退(rollback):撤銷指定sql語句的過程
  • 提交(commit): 將未儲存的sql語句寫入資料庫
  • 保留點(savepoint): 事務處理設定的臨時佔位符,可以對它釋出回退

26.2 控制事務處理

  1. 事務開始:
    start transaction;
  2. 使用rollback例子:
    select * from ordertotals;
    start transaction;
    delete from ordertotals;
    select * from ordertotals;
    rollback;
    select * from ordertotals;
  3. 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後自動釋放