首頁 > 資料庫 > mysql教程 > 我們如何實作MySQL事務?

我們如何實作MySQL事務?

WBOY
發布: 2023-09-02 11:53:02
轉載
1315 人瀏覽過

我們如何實作MySQL事務?

我們知道,在交易中,語句是作為一個單元執行的。如果事務內的任何操作失敗,則整個交易將失敗並應回滾;否則,語句所做的任何變更都會儲存到資料庫中。為了實現事務,MySQL 提供了以下語句 -

START TRANSACTION

顧名思義,事務從此語句開始。基本上,它通知 MySQL 接下來的語句應被視為單一工作單元,直到事務結束。

COMMIT

COMMIT 語句提交對資料庫的變更。換句話說,當一個事務成功完成後,應該發出 COMMIT 命令,以使所有涉及的表的變更生效。

ROLLBACK

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中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板