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ドキュメントから:
トランザクションをネストすることはできません。これは、STARTTRANSACTIONステートメントまたはそのシノニムの1つを発行したときに現在のトランザクションに対して実行された暗黙的なコミットの結果です。 https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html