106

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

4

2 に答える 2

87

いいえ、でも

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
---
于 2009-08-20T15:16:12.387 に答える
57

MySQLドキュメントから:

トランザクションをネストすることはできません。これは、STARTTRANSACTIONステートメントまたはその同義語の1つを発行するときに現在のトランザクションに対して実行される暗黙的なコミットの結果です。 https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html

于 2016-03-08T10:18:09.120 に答える