MySQLでは許可されたトランザクションを入れ子にしていますか?
-
19-09-2019 - |
質問
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文またはその同義語の1つを発行する時点でのトランザクションのために行わコミット暗黙的の結果です。 https://dev.mysql.com/doc/refman/5.7 /en/implicit-commit.htmlする
所属していません StackOverflow