我們如何使用 MySQL 中允許的巢狀事務?


我們藉助 START 命令和 SAVEPOINT 允許多項事務。讓我們藉助 CREATE 命令建立一個表。

建立一個表

mysql> CREATE table transactionDemo
-> (
-> id int auto_increment,
-> primary key(id)
-> );
Query OK, 0 rows affected (0.76 sec)

之後,我將藉助 START 命令開始一項事務 −

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

之後,我藉助 INSERT 命令插入以下記錄 −

mysql> INSERT into transactionDemo values();
Query OK, 1 row affected (0.04 sec)

我們可以藉助 SELECT 語句顯示一條記錄,如下所示 −

mysql> SELECT *from transactionDemo;

以下是輸出

+----+
| id |
+----+
| 1  |
+----+
1 row in set (0.00 sec)

之後,我藉助 SAVEPOINT 儲存此查詢。查詢如下 −

mysql> SAVEPOINT t2;

插入記錄

mysql> INSERT into transactionDemo values();
Query OK, 1 row affected (0.00 sec)

藉助 SELECT 命令顯示所有記錄 −

mysql> SELECT *from transactionDemo;

以下是輸出

+----+
| id |
+----+
| 1  |
| 2  |
+----+
2 rows in set (0.00 sec)

現在,我們可以回滾第一項事務 −

mysql> ROLLBACK TO t2;
Query OK, 0 rows affected (0.03 sec)

現在,我們可以顯示先前儲存的事務 −

mysql> SELECT * from transactionDemo;

以下是輸出

+----+
| id |
+----+
| 1  |
+----+
1 row in set (0.00 sec)

更新於:2020-6-25

335 次瀏覽

開啟 職業生涯

透過完成課程獲得認證

開始
廣告