質問

MySQLはネストされたトランザクションの使用を許可していますか?

役に立ちましたか?

解決

InnoDBSAVEPOINTSをサポートしています。

あなたは次のことを行うことができます:

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する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top