如何在 MySQL 中使用嵌套事务?

mysqlmysqli database

我们可以借助 SAVEPOINT 在 MySQL 中使用嵌套事务。

首先,创建一个表。之后,开始事务。

现在,在上面创建的表中插入记录。使用 SAVEPOINT 语句设置一个命名事务保存点,名称为标识符。

以下是以查询形式显示的所有步骤−

Create table

mysql> create table NestedTransactionDemo
   -> (
   -> Name varchar(200)
   -> );
Query OK, 0 rows affected (0.63 sec)

启动事务 −

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

现在,在表中插入一条记录

mysql> insert into NestedTransactionDemo values('John');
Query OK, 1 row affected (0.04 sec)

显示上面添加的记录 −

mysql> select *from NestedTransactionDemo;
+------+
| Name |
+------+
| John |
+------+
1 row in set (0.00 sec)

让我们开始处理事务以创建嵌套事务 −

mysql> savepoint transaction2;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into NestedTransactionDemo values('David');
Query OK, 1 row affected (0.00 sec)
mysql> select *from NestedTransactionDemo;
+-------+
| Name  |
+-------+
| John  |
| David |
+-------+
2 rows in set (0.00 sec)

mysql> rollback to transaction2;
Query OK, 0 rows affected (0.00 sec)

mysql> select *from NestedTransactionDemo;
+------+
| Name |
+------+
| John |
+------+
1 row in set (0.00 sec)

mysql> rollback to transaction2;
Query OK, 0 rows affected (0.00 sec)

相关文章