Están permitidos en transacciones anidadas MySQL?
-
19-09-2019 - |
Pregunta
¿Tiene MySQL permite el uso de transacciones anidadas?
Solución
InnoDB
apoya SAVEPOINTS
.
Puede hacer lo siguiente:
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
---
Otros consejos
A partir de la documentación de MySQL:
Las transacciones no se pueden anidar. Esto es una consecuencia de la COMMIT implícito realizado por cualquier transacción en curso cuando se emite un comando START transacción o uno de sus sinónimos. https://dev.mysql.com/doc/refman/5.7 /en/implicit-commit.html
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow