的MySQL是否允许使用嵌套事务的?

有帮助吗?

解决方案

InnoDB支持SAVEPOINTS

您可以执行以下操作:

CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;

START TRANSACTION;

INSERT
INTO    t_test
VALUES  (1);

SELECT  *
FROM    t_test;

 id
---
  1

SAVEPOINT tran2;

INSERT
INTO    t_test
VALUES  (2);

SELECT  *
FROM    t_test;

 id
---
  1
  2

ROLLBACK TO tran2;

SELECT  *
FROM    t_test;

 id
---
  1

ROLLBACK;

SELECT  *
FROM    t_test;

 id
---

其他提示

从MySQL文档:

  

事务不能被嵌套。这是隐含的后果对于任何当前事务,当你发出START TRANSACTION语句或其同义词之一提交执行。    https://dev.mysql.com/doc/refman/5.7 /en/implicit-commit.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top