在MySQL中,事務是一組SQL語句,它們被視為單個工作單元,由commit或rollback語句來結束。如果某個事務中的一條語句失敗,則整個事務會被回滾,也就是說,數據庫將回滾到事務開始之前的狀態。
commit語句是用來提交事務的,它會將所有的更改永久保存到數據庫中。在執行commit語句之前,所有的更改都只是在內存中進行的,所以如果在執行commit之前,程序出現崩潰或斷電等異常情況,那么所有的更改都會丟失。
下面是一個使用事務的例子:
START TRANSACTION; UPDATE account SET balance = balance - 100 WHERE id = 1; UPDATE account SET balance = balance + 100 WHERE id = 2; COMMIT;
上面的代碼中,我們為賬戶1從余額中扣除100元,向賬戶2中增加100元。然后,使用COMMIT語句提交事務,將所有更改永久保存到數據庫中。如果在執行UPDATE語句期間出現錯誤,那么整個事務會被回滾,更改將不會被保存。
在使用事務時,要注意一些事項:
- 事務必須在BEGIN或START TRANSACTION語句下開始,結束需要用COMMIT或ROLLBACK語句。
- 在同一個事務中,所有語句必須要用相同的數據庫引擎,否則無法執行。
- 不要在事務中使用DDL語句,比如CREATE TABLE和DROP TABLE等,因為這些語句會對數據庫的結構造成影響,無法回滾。
- 盡量避免長時間的事務,這會占用數據庫的資源,影響其他用戶的訪問。