MySQL 如何在MySQL中使用允许嵌套事务?
我们可以借助START命令和SAVEPOINT,允许多个事务。让我们使用CREATE命令创建一个表。
阅读更多:MySQL 教程
创建表
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)