我們知道,在交易中,語句是作為一個單元執行的。如果事務內的任何操作失敗,則整個交易將失敗並應回滾;否則,語句所做的任何變更都會儲存到資料庫中。為了實現事務,MySQL 提供了以下語句 -
顧名思義,事務從此語句開始。基本上,它通知 MySQL 接下來的語句應被視為單一工作單元,直到事務結束。
COMMIT 語句提交對資料庫的變更。換句話說,當一個事務成功完成後,應該發出 COMMIT 命令,以使所有涉及的表的變更生效。
ROLLBACK 指令撤銷語句所做的任何更改,並將資料庫傳回到先前的狀態,即交易開始時的狀態。
以下是展示 MySQL 交易實作的範例 -
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.06 sec)
在此範例中,交易由 START TRANSACTION 語句啟動。然後執行兩個 INSERT 語句,後面跟著一個 COMMIT 語句。 COMMIT 語句會將變更儲存到資料庫,可以從下列結果集中觀察到這些更改,該結果集顯示值已插入表中 -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec) mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','History',40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Harshit','History',48); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.04 sec)
在此範例中,交易由 START TRANSACTION 語句啟動。然後執行兩個 INSERT 語句,後面跟著一個 ROLLBACK 語句。 ROLLBACK 語句將撤銷對資料庫所做的更改,可以從下列結果集中觀察到,該結果集顯示沒有新值插入到表中 -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 1 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec)
以上是我們如何實作MySQL事務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!