Transazioni SQLite

Transazioni SQLite
“Le transazioni sono blocchi logicamente organizzati o sequenze di lavoro che possono essere eseguite manualmente o meccanicamente da un DBMS. Se crei, si modificano o rimuovi i dati dalla tabella, si eseguono transazioni sulla tabella. Il controllo delle transazioni è fondamentale per il mantenimento dell'integrità dei dati e per affrontare i problemi del database.

In SQLite, una transazione è un gruppo di comandi T-SQL che eseguono come comando T-SQL univoco. Se si verifica un errore durante l'esecuzione di questi comandi SQLite, la transazione verrà ribaltata nella sua interezza. In generale, SQLite è in modalità auto-commit, il che significa che crea automaticamente una transazione con ciascun comando, la elabora e commette le modifiche al database.

In questo articolo, dimostreremo come implementare la transazione SQLite per assicurare l'integrità e l'affidabilità dei dati."

Proprietà della transazione SQLite

SQLite è un database transazionale, il che significa che tutti gli aggiornamenti e le ricerche sono atomici, coerenti, isolati e di lunga durata (acido). Le quattro caratteristiche standard indicate di seguito, che sono comunemente abbreviate come acido, sono presenti nelle transazioni.

Atomicita: Un singolo passaggio del processo deve essere completato da una transazione atomica. Indica che una modifica non può essere suddivisa in componenti più piccoli. La transazione completa viene eseguita o meno quando una transazione è in modalità di commit.

Consistenza: Le transazioni devono garantire che il database sia cambiato da uno stato legittimo all'altro. Il database diventa incoerente quando una transazione avvia ed esegue un comando per aggiornare i dati. Tuttavia, il database deve rimanere coerente quando vengono eseguiti commit e rollback sulle transazioni.

Isolamento: La transazione in sospeso della sessione deve essere separata da altre sessioni. Quando una sessione avvia una transazione e utilizza il comando insert o aggiorna per modificare i dati, le modifiche sono accessibili solo all'operazione corrente e non ad altri. Le modifiche apportate da altri utenti dopo l'avvio della transazione, d'altra parte, non dovrebbero mai essere evidenti all'utente attuale.

Durabilità: Se una transazione è adeguatamente impegnata, le modifiche nel database devono essere permanenti in caso di interruzione di corrente o di un arresto del programma. L'aggiornamento non dovrebbe persistere se il programma termina prima della transazione.

Come eseguire transazioni in sqlite?

Supponiamo di voler regolare tali transazioni per conservare la coerenza dei dati e gestire i guasti del database. Possiamo interrompere la modalità auto-impegno e avviare esplicitamente le transazioni in base alle nostre esigenze utilizzando le seguenti istruzioni.

  • INIZIO: Questo è il punto in cui viene avviata la transazione.
  • COMMETTERE: Con questa terminologia in SQLite, impegneremo la transazione, il che significa che salverà tutte le modifiche al database.
  • Rollback: La transazione nel suo insieme sarà invertita.

Si noti che solo le operazioni DML inseriscono, aggiornano ed eliminano le istruzioni di controllo transazionale. Non possono essere utilizzati per estrarre tabelle poiché il database commette prontamente queste operazioni.

Creazione di tabelle SQLite per eseguire transazioni

Per eseguire transazioni, in primo luogo, dobbiamo creare una tabella. Nella figura, puoi notare che abbiamo creato una tabella con il nome "Person_Accounts."La tabella è specificata con le quattro colonne come Person_id, Person_Name, Account_Number e Account_Balance con i loro tipi di dati.

Crea Table Person_Accounts (
Person_id int Key primario ,
Person_Name Char (10) ,
account_number int ,
Account_Balance Float
);

Qui, abbiamo un record inserito con il comando sqlite insert.

Inserisci i valori di Person_Accounts (1, 'Ayat', 171636460, 5000);
Inserisci i valori di Person_Accounts (2, 'muneeb', 673201984, 8000);
Inserisci i valori di Person_Accounts (3, 'Wahaj', 112603502, 4000);
Inserisci i valori di Person_Accounts (4, 'Maya', 501738449, 7500);

La tabella è visualizzabile nel formato della tabella come segue:

Esempio 1: eseguire la transazione con comando iniziale in sqlite

Inizia la transazione, o il comando iniziale, può essere utilizzato per avviare le transazioni. Tuttavia, se il database viene terminato o si verifica un errore, una transazione rollirà.

Inizialmente, abbiamo incluso una terminologia di inizio con il termine di transazione. Quindi, abbiamo il comando di aggiornamento, che opera sulla colonna Account_Balance in cui Person_id è uguale a "2" insieme a Person_id uguale a "4". Come abbiamo dato un'istruzione di commit, la transazione termina qui.

Inizia la transazione;
Aggiorna Person_Accounts
Imposta account_Balance = account_Balance - 1000
Dove persona_id = 2;
Aggiorna Person_Accounts
Imposta account_Balance = account_Balance + 500
Dove persona_id = 4;
COMMETTERE;

La traduzione viene eseguita correttamente sulla tabella "Person_Accounts", e il campo "Account_Balance" viene aggiornato su Person_id specificato.

Esempio 2: eseguire la transazione sul comando commit in sqlite

Il comando commit è un comando transazionale che salva le modifiche al database attivate da una transazione. Il comando commit conserva tutte le transazioni di database dal precedente commit o istruzioni di rollback.

Nell'esempio seguente, abbiamo il primo inizio della transazione con la transazione di inizio termine. Dopo questo, abbiamo il comando insert, che inserisce un nuovo record nella tabella “Person_Actounts."Alla fine abbiamo dato un comando di commit, che termina la transazione qui e salva la modifica nella tabella data.

Inizia la transazione;
Inserisci in Person_Accounts (Person_id, Person_Name, Account_Number, Account_Balance)
Valori (3, 'wahaj', 112603502, 4000);
COMMETTERE;

La vista della tabella mostra il nuovo record nella tabella seguente.

Esempio 3: eseguire la transazione sul comando rollback in sqlite

Il rollback è un comando transazionale che viene utilizzato per distrarre le transazioni che non sono ancora state impegnate nel database.

Qui, abbiamo eseguito l'operazione di eliminazione sulla tabella "Persons_Accounts", in cui corrispondeva alla condizione sul campo Account_Number dato. Dopo questo, abbiamo fornito istruzioni di rollback che terminano anche la transazione qui ma non salvi le modifiche che abbiamo eseguito sulla tabella.

Inizia la transazione;
Elimina da Person_Accounts dove account_number = 112603502;
Elimina da Person_Accounts dove account_number = 171636460;
Rollback;

Dopo aver eseguito l'operazione di rollback, la tabella ha gli stessi valori e campi esistenti nella tabella di prima.

Conclusione

Dopo aver letto questo articolo, speriamo che tu abbia una chiara comprensione delle transazioni SQLite. Abbiamo parlato delle proprietà di transazione e del controllo delle transazioni di SQLite. Ha anche implementato diversi esempi di SQLite che descrivono il comportamento delle transazioni con le funzionalità di commit e rollback. Questo è tutto ciò che c'è da sapere sulle transazioni SQLite, comprese le informazioni sulla transazione di commit e rollback.