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.0Andere Erweiterungen