Question

Est-ce que MySQL permet l'utilisation de transactions imbriquées?

Était-ce utile?

La solution

InnoDB soutient SAVEPOINTS.

Vous pouvez faire ce qui suit:

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

Autres conseils

De la documentation MySQL:

  

Les transactions ne peuvent pas être imbriquées. Ceci est une conséquence de la validation implicite effectuée pour toute transaction en cours lorsque vous émettez une instruction START TRANSACTION ou un de ses synonymes.    https://dev.mysql.com/doc/refman/5.7 /en/implicit-commit.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top