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