Atomarität
Atomarität in SQL bezieht sich auf eine der ACID-Eigenschaften, die sicherstellt, dass Transaktionen beim Abfragen von Daten mit SQL verwendet werden.
Im Kontext von SQL-Datenbanken garantiert die Atomarität, dass alle Operationen innerhalb einer bestimmten logischen Einheit abgeschlossen werden oder keine von ihnen.
Transaktionsverarbeitung in SQL
Wichtige Merkmale
-
Rollback: Falls ein Teil fehlschlägt (z. B. aufgrund eines Fehlers oder einer Verletzung von Einschränkungen), wird die gesamte Transaktion zurückgesetzt und Änderungen werden rückgängig gemacht;
-
Commit: Wenn alle Operationen erfolgreich sind, wird die Transaktion bestätigt und die Änderungen werden dauerhaft gespeichert.
Erstellen von Transaktionen in SQL
In SQL gilt jede einzelne Anweisung als Transaktion.
Es ist jedoch möglich, Transaktionen manuell zu erstellen, die mehr als eine Anweisung enthalten.
Angenommen, es gibt zwei Tabellen:
-
die Tabelle
BankAccounts
mit den Spalten:account_number
(Primary Key),account_holder
undbalance
; -
die Tabelle
UserLogs
mit den Spalten:account_number
,action
,timestamp
usw. Die Kombination ausaccount_number
undtimestamp
bildet den zusammengesetzten Primärschlüssel dieser Relation.
Betrachten wir nun ein Szenario, in dem wir beabsichtigen, ein neues Bankkonto zu erstellen und gleichzeitig einen Protokolleintrag zu generieren, um die Hinzufügung des neuen Kontos zu dokumentieren.
Es ist zwingend erforderlich, dass diese beiden Aktionen, das Hinzufügen des Kontos und das Protokollieren des Ereignisses, als eine einzige logische Einheit behandelt und in eine einzige Transaktion eingebettet werden. Hier ist ein sehr einfaches Beispiel, wie dies mit einer Transaktion umgesetzt werden kann:
-- Begin the transaction
BEGIN;
-- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0
INSERT INTO BankAccounts (account_number, account_holder, balance)
VALUES (109, 'Emma Watson', 0);
-- Step 2: Add log entry if the account was added
-- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109
INSERT INTO UserLogs (account_number, action)
VALUES (109, 'New account added');
-- Commit the transaction, making the changes permanent
COMMIT;
In der obigen Abfrage verwenden wir den BEGIN
-Block, um anzuzeigen, dass alle nachfolgenden Anweisungen als eine einzige Einheit betrachtet werden müssen – wenn eine davon nicht ausgeführt wird, darf keine der Anweisungen ausgeführt werden.
Das Schlüsselwort COMMIT
kennzeichnet das Ende des Transaktionsblocks.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 4.35
Atomarität
Swipe um das Menü anzuzeigen
Atomarität in SQL bezieht sich auf eine der ACID-Eigenschaften, die sicherstellt, dass Transaktionen beim Abfragen von Daten mit SQL verwendet werden.
Im Kontext von SQL-Datenbanken garantiert die Atomarität, dass alle Operationen innerhalb einer bestimmten logischen Einheit abgeschlossen werden oder keine von ihnen.
Transaktionsverarbeitung in SQL
Wichtige Merkmale
-
Rollback: Falls ein Teil fehlschlägt (z. B. aufgrund eines Fehlers oder einer Verletzung von Einschränkungen), wird die gesamte Transaktion zurückgesetzt und Änderungen werden rückgängig gemacht;
-
Commit: Wenn alle Operationen erfolgreich sind, wird die Transaktion bestätigt und die Änderungen werden dauerhaft gespeichert.
Erstellen von Transaktionen in SQL
In SQL gilt jede einzelne Anweisung als Transaktion.
Es ist jedoch möglich, Transaktionen manuell zu erstellen, die mehr als eine Anweisung enthalten.
Angenommen, es gibt zwei Tabellen:
-
die Tabelle
BankAccounts
mit den Spalten:account_number
(Primary Key),account_holder
undbalance
; -
die Tabelle
UserLogs
mit den Spalten:account_number
,action
,timestamp
usw. Die Kombination ausaccount_number
undtimestamp
bildet den zusammengesetzten Primärschlüssel dieser Relation.
Betrachten wir nun ein Szenario, in dem wir beabsichtigen, ein neues Bankkonto zu erstellen und gleichzeitig einen Protokolleintrag zu generieren, um die Hinzufügung des neuen Kontos zu dokumentieren.
Es ist zwingend erforderlich, dass diese beiden Aktionen, das Hinzufügen des Kontos und das Protokollieren des Ereignisses, als eine einzige logische Einheit behandelt und in eine einzige Transaktion eingebettet werden. Hier ist ein sehr einfaches Beispiel, wie dies mit einer Transaktion umgesetzt werden kann:
-- Begin the transaction
BEGIN;
-- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0
INSERT INTO BankAccounts (account_number, account_holder, balance)
VALUES (109, 'Emma Watson', 0);
-- Step 2: Add log entry if the account was added
-- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109
INSERT INTO UserLogs (account_number, action)
VALUES (109, 'New account added');
-- Commit the transaction, making the changes permanent
COMMIT;
In der obigen Abfrage verwenden wir den BEGIN
-Block, um anzuzeigen, dass alle nachfolgenden Anweisungen als eine einzige Einheit betrachtet werden müssen – wenn eine davon nicht ausgeführt wird, darf keine der Anweisungen ausgeführt werden.
Das Schlüsselwort COMMIT
kennzeichnet das Ende des Transaktionsblocks.
Danke für Ihr Feedback!