START TRANSACTION

Sintassi:

START TRANSACTION [WITH CONSISTENT SNAPSHOT] | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET autocommit = {0 | 1}

Spiegazione:

L'istruzione START TRANSACTION, o BEGIN, fa iniziare una transazione. COMMIT esegue la transazione corrente, rendendo permanenti le modifiche. ROLLBACK annulla la transazione corrente, cancellando le modifiche. L'istruzione SET autocommit disabilita o abilita la modalità di autocommit predefinita per la sessione corrente.

La parola chiave opzionale WORK è supportata in COMMIT e ROLLBACK, così come CHAIN e RELEASE. CHAIN e RELEASE servono ad avere un maggiore controllo sul completamento della transazione. Il valore della variabile di sistema completion_type determina il comportamento predefinito del completamento. Si veda variabili di sistema del server.

La clausola AND CHAIN fa sì che, appena la transazione corrente termina, ne inizi una nuova, che abbia lo stesso livello di isolamento. La clausola RELEASE fa sì che il server disconnetta la sessione corrente al termine della transazione corrente. Specificando la parola chiave NO si sopprime CHAIN o RELEASE; questo può essere utile se la variabile completion_type è impostata per il concatenamento delle transazioni, o per terminare la sessione per default.

Per default, la modalità di autocommit è abilitata. Questo significa che appena si esegue un'istruzione che aggiorna (modifica) una tabella, MariaDB registra i cambiamenti su disco in modo permanente. Per disabilitare l'autocommit si può eseguire la seguente istruzione:

SET autocommit=0;

Dopo aver disabilitato l'autocommit impostando la variabile autocommit a zero, le modifiche alle tabelle che supportano le transazioni (come quelle di tipo InnoDB o NDBCLUSTER) non vengono più rese permanenti immediatamente. Occorre eseguire COMMIT per registrare le modifiche su disco, o ROLLBACK per annullarle.

Per disabilitare la modalità autocommit per una singola serie di comandi, si può utilizzare l'istruzione START TRANSACTION.

Le transazioni non possono essere utilizzare all'interno delle Stored Function e dei Trigger. Nelle Stored Procedure START TRANSACTION non è consentito, pertanto occorre utilizzare BEGIN.

Esempi:

START TRANSACTION;
SELECT @A:=SUM(salario) FROM tabella1 WHERE tipo=1;
UPDATE tabella2 SET sommario=@A WHERE tipo=1;
COMMIT;

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.