SQLite Transaktion

Eine Transaktion ist eine Arbeitseinheit, die an einer Datenbank ausgeführt wird. Eine Transaktion ist eine Einheit oder Abfolge von Arbeit, die in logischer Reihenfolge abgeschlossen wird, die manuell von einem Benutzer oder automatisch von einem Datenbankprogramm durchgeführt werden kann.

Eine Transaktion bezieht sich auf eine Erweiterung, die die Datenbank ein- oder mehrmals ändert. Wenn Sie beispielsweise einen Datensatz erstellen, einen Datensatz aktualisieren oder einen Datensatz aus einer Tabelle löschen, führen Sie eine Transaktion für diese Tabelle durch. Es ist wichtig, Transaktionen zu steuern, um die Datenintegrität zu gewährleisten und Datenbankfehler zu behandeln.

Tatsächlich können Sie viele SQLite-Abfragen zu einer Gruppe zusammenfassen und alle zusammen als Teil einer Transaktion ausführen.

Transaktionseigenschaften

Transaktionen haben die folgenden vier Standardeigenschaften, die üblicherweise mit ACID abgekürzt werden:

  • Atomarität:Stellt sicher, dass alle Operationen innerhalb der Arbeitseinheit erfolgreich abgeschlossen werden; andernfalls wird die Transaktion im Falle eines Fehlers beendet und vorherige Operationen werden auf ihren vorherigen Zustand zurückgerollt.

  • Konsistenz:Stellt sicher, dass die Datenbank bei einer erfolgreich festgeschriebenen Transaktion den Zustand korrekt ändert.

  • Isolation:Macht Transaktionsoperationen unabhängig voneinander und füreinander transparent.

  • Dauerhaftigkeit:Stellt sicher, dass die Ergebnisse oder Auswirkungen einer festgeschriebenen Transaktion auch bei einem Systemausfall bestehen bleiben.

Transaktionssteuerung

Verwenden Sie die folgenden Befehle, um Transaktionen zu steuern:

  • BEGIN TRANSACTION: Startet die Transaktionsverarbeitung.

  • COMMIT: Änderungen speichern, oder Sie können den BefehlEND TRANSACTIONverwenden.

  • ROLLBACK: Die vorgenommenen Änderungen zurücksetzen.

Transaktionssteuerungsbefehle werden nur mit den DML-Befehlen INSERT, UPDATE und DELETE verwendet. Sie können nicht beim Erstellen oder Löschen von Tabellen verwendet werden, da diese Operationen in der Datenbank automatisch festgeschrieben werden.

Befehl BEGIN TRANSACTION

Eine Transaktion kann mit dem Befehl BEGIN TRANSACTION oder einfach dem Befehl BEGIN gestartet werden. Solche Transaktionen werden normalerweise weiter ausgeführt, bis der nächste COMMIT- oder ROLLBACK-Befehl erreicht wird. Wenn die Datenbank jedoch geschlossen wird oder ein Fehler auftritt, wird die Transaktionsverarbeitung ebenfalls zurückgerollt. Das Folgende ist die einfache Syntax zum Starten einer Transaktion:

BEGIN;

or 

BEGIN TRANSACTION;

COMMIT-Befehl

Der COMMIT-Befehl ist ein Transaktionsbefehl, mit dem die durch eine Transaktion hervorgerufenen Änderungen in der Datenbank gespeichert werden.

Der COMMIT-Befehl speichert alle Transaktionen seit dem letzten COMMIT- oder ROLLBACK-Befehl in der Datenbank.

Die Syntax des COMMIT-Befehls lautet wie folgt:

COMMIT;

or

END TRANSACTION;

ROLLBACK-Befehl

Der ROLLBACK-Befehl ist ein Transaktionsbefehl, mit dem Transaktionen rückgängig gemacht werden, die noch nicht in der Datenbank gespeichert wurden.

Der ROLLBACK-Befehl kann nur verwendet werden, um Transaktionen seit der letzten Ausgabe eines COMMIT- oder ROLLBACK-Befehls rückgängig zu machen.

Die Syntax des ROLLBACK-Befehls lautet wie folgt:

ROLLBACK;

Beispiele

Angenommen, die Tabelle COMPANY hat die folgenden Datensätze:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Starten wir nun eine Transaktion und löschen wir Datensätze mit age = 25 aus der Tabelle. Schließlich verwenden wir den ROLLBACK-Befehl, um alle Änderungen rückgängig zu machen.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> ROLLBACK;

Prüfen Sie die COMPANY-Tabelle; sie enthält noch die folgenden Datensätze:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Starten wir nun eine weitere Transaktion, löschen wir Datensätze mit age = 25 aus der Tabelle, und schließlich verwenden wir den COMMIT-Befehl, um alle Änderungen festzuschreiben.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> COMMIT;

Überprüfen Sie die Tabelle COMPANY, sie hat die folgenden Datensätze:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0
Andere Erweiterungen