Разрешены ли вложенные транзакции в MySQL?
-
19-09-2019 - |
Вопрос
Разрешает ли 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:
Транзакции не могут быть вложенными.Это является следствием неявной фиксации, выполняемой для любой текущей транзакции при выполнении инструкции START TRANSACTION или одного из ее синонимов. https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
Не связан с StackOverflow