web-dev-qa-db-fra.com

Les transactions imbriquées sont-elles autorisées dans MySQL?

MySQL autorise-t-il l'utilisation de transactions imbriquées?

79
Alix Axel

InnoDB prend en charge SAVEPOINTS.

Vous pouvez effectuer les opérations suivantes:

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

De la documentation MySQL:

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

25
bancer