São operações permitidas em MySQL aninhadas?
-
19-09-2019 - |
Pergunta
O MySQL permite o uso de transações aninhadas?
Solução
suportes InnoDB
SAVEPOINTS
.
Você pode fazer o seguinte:
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
---
Outras dicas
De documentação do MySQL:
As transações podem não ser aninhados. Esta é uma consequência do COMMIT implícito realizado para qualquer transação atual quando você emitir uma declaração START TRANSACTION ou um de seus sinônimos. https://dev.mysql.com/doc/refman/5.7 /en/implicit-commit.html
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow