Domanda

Il MySQL consente l'utilizzo di transazioni nidificate?

È stato utile?

Soluzione

InnoDB supporta SAVEPOINTS.

È possibile effettuare le seguenti operazioni:

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

Altri suggerimenti

Da documentazione di MySQL:

  

Le transazioni non possono essere nidificate. Questa è una conseguenza della implicita commit eseguito per qualsiasi transazione corrente quando si emette una dichiarazione START TRANSACTION o uno dei suoi sinonimi.    https://dev.mysql.com/doc/refman/5.7 /en/implicit-commit.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top