MariaDB - Transazioni

Le transazioni sono operazioni di gruppo sequenziali. Funzionano come una singola unità e non terminano finché tutte le operazioni all'interno del gruppo non vengono eseguite correttamente. Un singolo errore nel gruppo causa il fallimento dell'intera transazione e non ha alcun impatto sul database.

Le transazioni sono conformi ad ACID (atomicità, coerenza, isolamento e durabilità) -

  • Atomicity - Assicura il successo di tutte le operazioni interrompendo gli errori e ripristinando le modifiche.

  • Consistency - Assicura che il database applichi le modifiche su una transazione riuscita.

  • Isolation - Consente operazioni di transazione indipendenti operazioni di transazioni.

  • Durability - Assicura la persistenza di una transazione di successo in caso di guasto del sistema.

All'inizio di un'istruzione di transazione c'è l'istruzione START TRANSACTION seguita dalle istruzioni COMMIT e ROLLBACK -

  • START TRANSACTION avvia la transazione.

  • COMMIT salva le modifiche ai dati.

  • ROLLBACK termina la transazione, distruggendo qualsiasi modifica.

In caso di transazione riuscita, COMMIT agisce. In caso di errore, ROLLBACK agisce.

Note- Alcune istruzioni causano un commit implicito e causano anche un errore quando vengono utilizzate all'interno delle transazioni. Esempi di tali dichiarazioni includono, ma non sono limitati a CREATE, ALTER e DROP.

Le transazioni MariaDB includono anche opzioni come SAVEPOINT e LOCK TABLES. SAVEPOINT imposta un punto di ripristino da utilizzare con ROLLBACK. LOCK TABLES consente di controllare l'accesso alle tabelle durante le sessioni per impedire modifiche durante determinati periodi di tempo.

La variabile AUTOCOMMIT fornisce il controllo sulle transazioni. Un'impostazione di 1 forza tutte le operazioni da considerare come transazioni riuscite e un'impostazione di 0 fa sì che la persistenza delle modifiche si verifichi solo su un'istruzione COMMIT esplicita.

Struttura di una transazione

La struttura generale di una dichiarazione di transazione consiste nell'iniziare con START TRANSACTION. Il passo successivo è l'inserimento di uno o più comandi / operazioni, l'inserimento di istruzioni che controllano la presenza di errori, l'inserimento di istruzioni ROLLBACK per gestire eventuali errori rilevati e infine l'inserimento di un'istruzione COMMIT per applicare le modifiche alle operazioni riuscite.

Rivedi l'esempio fornito di seguito:

START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;