English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite Transaktionen

Ein Geschäft ist ein Arbeitsblock für die Datenbank. Ein Geschäft ist eine Einheit oder eine Reihenfolge von Arbeiten, die in logischer Reihenfolge abgeschlossen werden, sei es von einem Benutzer manuell oder von einer Art Datenbankprogramm automatisch abgeschlossen.

Ein Geschäft ist die Verteilung einer oder mehrerer Änderungen auf die Datenbank. Zum Beispiel führen Sie ein Geschäft auf dem Tisch aus, um Zeilen zu erstellen, zu aktualisieren oder zu löschen. Es ist wichtig, das Geschäft zu steuern, um die Datenintegrität zu gewährleisten und Datenbankfehler zu behandeln.

Tatsächlich werden Sie viele SQLite-Abfragen zu einer Gruppe zusammenfassen und sie als Teil eines Geschäfts gemeinsam ausführen.

Eigenschaften des Geschäfts

Ein Geschäft hat folgende vier Standardeigenschaften, die normalerweise durch die Abkürzung ACID dargestellt werden.

  • Atomarität (Atomicity):Stellen Sie sicher, dass alle Operationen im Arbeitsbereich erfolgreich abgeschlossen werden, andernfalls wird das Geschäft bei einem Ausfall beendet und die vorherigen Operationen werden auf den früheren Zustand zurückgerollt.

  • Konsistenz (Konsistenz):Stellt sicher, dass die Datenbank den Zustand korrekt ändert, auf dem eine Transaktion erfolgreich bestätigt wurde.

  • Isolation (Isolation):Macht die Transaktionsoperationen voneinander unabhängig und transparent.

  • Durabilität (Dauerhaftigkeit):Stellen Sie sicher, dass die Ergebnisse oder Auswirkungen der abgeschlossenen Transaktionen im Falle eines Systemausfalls weiterhin bestehen.

Transaktionssteuerung

Hier sind die folgenden Befehle zur Transaktionssteuerung:

  • BEGIN TRANSACTION −Eine Transaktion starten.

  • COMMIT−Um die Änderungen zu speichern, kann auchEND TRANSACTIONBefehl.

  • ROLLBACK −Änderungen zurückrollen.

Transaktionssteuerungsbefehle werden nur mit DML-Befehlen INSERT, UPDATE und DELETE verwendet. Sie können nicht verwendet werden, um Tabellen zu erstellen oder zu löschen, da diese Operationen in der Datenbank automatisch bestätigt werden.

BEGIN TRANSACTION-Befehl

Es kann BEGIN TRANSACTION oder einfach BEGIN verwendet werden, um eine Transaktion zu starten. Solche Transaktionen dauern in der Regel bis zum nächsten COMMIT- oder ROLLBACK-Befehl. Aber wenn die Datenbank geschlossen wird oder ein Fehler auftritt, wird die Transaktion auch zurückgerollt. Hier ist die einfache Syntax zum Starten einer Transaktion.

BEGIN;
oder 
BEGIN TRANSACTION;

COMMIT-Befehl

Der COMMIT-Befehl ist ein transaktionaler Befehl, der verwendet wird, um die Änderungen der Transaktionsaufrufe in die Datenbank zu speichern.

Seit dem letzten COMMIT- oder ROLLBACK-Befehl speichert der COMMIT-Befehl alle Transaktionen in die Datenbank.

Hier ist die Syntax des COMMIT-Befehls.

COMMIT;
oder
END TRANSACTION;

ROLLBACK-Befehl

Der ROLLBACK-Befehl ist ein transaktionaler Befehl, der verwendet wird, um noch nicht in die Datenbank gesicherte Transaktionen rückgängig zu machen.

Seit dem letzten COMMIT- oder ROLLBACK-Befehl kann der ROLLBACK-Befehl nur verwendet werden, um Transaktionen rückgängig zu machen.

Hier ist die Syntax des ROLLBACK-Befehls.

ROLLBACK;

Online-Beispiel

mit folgenden Einträgen in der Tabelle COMPANY.

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

Lasst uns eine Transaktion beginnen und von age = 25aus dem Tisch gelöscht. Dann verwenden wir den Befehl ROLLBACK, um alle Änderungen rückgängig zu machen.

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

Jetzt, wenn du die Tabelle COMPANY überprüfst, hat sie immer noch die folgenden Einträge-

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

Lasst uns eine andere Transaktion beginnen und von AGE = 25aus dem Tisch gelöscht, und dann verwenden wir den Befehl COMMIT, um alle Änderungen zu bestätigen.

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

Wenn Sie jetzt überprüfen, ob die Tabelle COMPANY weiterhin die folgenden Einträge hat-

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