Proprietà della transazione
Transazioni, spesso conosciute con il termine ACIDO, hanno quattro proprietà generali principali.
- Atomicita: Ciò garantisce che tutte le attività all'interno dell'unità di lavoro vengano completate con successo; altrimenti, proprio al punto di errore, il processo viene terminato e i processi precedenti vengono ripristinati al loro vecchio stato.
- Consistenza: Ciò significa che su un processo sufficientemente impegnato, il database aggiorna lo stato in modo appropriato.
- Solitudine: Aiuta le transazioni a lavorare tra loro e individualmente e in modo trasparente.
- Durata: Ciò garantisce che, in caso di guasto del sistema, l'esito o la conseguenza di una transazione impegnata venga mantenuto.
Transazioni MySQL funzionanti:
All'interno di MySQL, i due termini Commit e Rollback vengono utilizzati principalmente solo per le transazioni MySQL. Le transazioni iniziano solo con la dichiarazione BEGIN WORK e terminano con una dichiarazione COMMIT o una dichiarazione ROLLBACK. Le istruzioni SQL comprendono la maggior parte della transazione sia tra le istruzioni di avvio che di arresto. Tali serie di eventi sono indipendenti dallo specifico linguaggio di programmazione utilizzato. Creerai un percorso adatto in qualsiasi lingua tu stia usando per costruire l'applicazione. Le seguenti istruzioni SQL possono essere implementate utilizzando la funzione mysql query().
- INIZIO: Avvia il tuo processo o transazione fornendo l'istruzione SQL BEGIN WORK.
- Aggiungi il COMANDO SQL: una o più istruzioni SQL come SELECT, INSERT, UPDATE e DELETE, rispettivamente. Conferma anche se non c'è errore e tutto è conforme alle tue aspettative.
- COMMETTERE: L'istruzione COMMIT deve essere imposta dopo che la transazione è andata a buon fine, in modo che le modifiche a tutte le tabelle associate possano avere pieno effetto.
- RITORNO: Se si verifica un malfunzionamento, è infatti opportuno inviare un'istruzione ROLLBACK per riportare ogni tabella specificata nella transazione alla sua condizione precedente.
- AUTOCOMMITTENTE: Per impostazione predefinita, MySQL applica le modifiche in modo permanente a un database. Se AUTOCOMMIT è impostato su 1 (standard), si presume che ogni query SQL (che sia o meno all'interno di una transazione) sia una transazione completata e confermata fino a quando non viene completata per impostazione predefinita. Per evitare il commit automatico, imposta AUTOCOMMIT su 0.
Esempio 01: modalità AutoCommit attivata:
MySQL opera con la fase Autocommit consentita per impostazione predefinita. Assicura che MySQL salvi le modifiche sul disco per crearlo perennemente finché eseguiamo una query che regola (altera) una tabella. Non è necessario tornare indietro la mossa. Proviamo con AUTOCOMMIT in modalità. Apri la shell della riga di comando MySQL e digita la password per iniziare.
Prendi un esempio di una tabella 'libro' che è stata creata in un database 'dati'. Al momento, non abbiamo ancora eseguito alcuna query su di esso.
>> SELEZIONA * DAI dati.libro;
Passo 2: Questo processo serve per aggiornare la tabella "libro". Aggiorniamo il valore della colonna "Autore" dove il "Nome" di un libro è "Casa". Puoi vedere che le modifiche sono state apportate con successo.
>> AGGIORNAMENTO dati.book SET Author = 'Cristian Steward' WHERE Name = 'Casa';
Dando un'occhiata alla tabella aggiornata, abbiamo un valore modificato dell'autore dove 'nome' è 'Home'.
>> SELEZIONA * DAI dati.libro;
Usiamo il comando ROLLBACK per annullare le modifiche semplicemente aggiungendo la query seguente. Puoi vedere che la query ROLLBACK non funziona qui in quanto mostra che "0 righe interessate".
>> RITORNO;
Puoi anche vedere anche la tabella. La tabella non ha subito modifiche dopo l'esecuzione dell'istruzione ROLLBACK finora. Ciò significa che il ROLLBACK non funziona quando abbiamo AUTOCOMMIT attivo per impostazione predefinita.
>> SELEZIONA * DAI dati.libro;
Esempio 02: modalità AutoCommit disattivata:
Per annullare le modifiche effettuate, proviamo con la modalità AUTOCOMMIT off. Utilizzando lo stesso esempio di tabella 'libro', eseguiremo alcune modifiche su di essa. Utilizzeremo la dichiarazione START TRANSACTION per disattivare la sua fase di autocommit o semplicemente digiteremo il comando seguente per disattivare AUTOCOMMIT.
>> IMPOSTA AUTOCOMMIT = 0;Diciamo che abbiamo la stessa tabella "libro" nel nostro database e dobbiamo apportare modifiche ad essa. Quindi ripristina di nuovo quelle modifiche a quelle precedenti.
>> SELEZIONA * DAI dati.libro;
Se non hai disattivato la modalità AUTOCOMMIT, inizia con una query START TRANSACTION nella shell della riga di comando come di seguito.
>> INIZIA TRANSAZIONE;
Aggiorneremo la stessa tabella utilizzando il comando UPDATE impostando "Autore" come "Aliana" dove il "Nome" di un libro è "Sogno". Fallo usando il comando seguente. Vedrai che le modifiche verranno apportate con successo ed efficacia.
>> AGGIORNAMENTO dati.book SET Autho = 'Aliana' WHERE Name = 'Sogno';
Controlliamo se la query sopra ha funzionato perfettamente e ha apportato modifiche alla tabella o meno. Puoi controllare la tabella aggiornata usando il comando SELECT sottostante come sempre.
>> SELEZIONA * DAI dati.libro;Puoi vedere che la query ha funzionato alla grande, come mostrato di seguito.
Ora tocca al comando ROLLBACK eseguire la sua funzione. Prova il comando ROLLBACK nella riga di comando per ripristinare l'aggiornamento recente alla tabella.
>> RITORNO;
Controlliamo se la query ROLLBACK è stata eseguita come dovrebbe funzionare o meno. Per questo, devi controllare di nuovo la tabella "libro" usando il comando "SELEZIONA" come sempre.
>> SELEZIONA * DAI dati.libro;Puoi vedere dall'output qui sotto che ROLLBACK ha finalmente funzionato. Ha ripristinato le modifiche apportate dalla query UPDATE su questa tabella.
Conclusione:
Questo è tutto per le transazioni MySQL. Spero che questa guida ti aiuti a eseguire comodamente le transazioni MySQL.