Frage

Ist MySQL die Verwendung von verschachtelten Transaktionen zulassen?

War es hilfreich?

Lösung

InnoDB unterstützt SAVEPOINTS.

Sie können folgendes tun:

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

Andere Tipps

Von MySQL-Dokumentation:

  

Transaktionen können nicht verschachtelt werden. Dies ist eine Folge des impliziten COMMIT für alle aktuellen Transaktion ausgeführt wird, wenn Sie eine START TRANSACTION-Anweisung oder eines seiner Synonyme ausgeben.    https://dev.mysql.com/doc/refman/5.7 /en/implicit-commit.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top