Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Atomarität | Acid
Fortgeschrittene Techniken in SQL

bookAtomaritä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 und balance;

  • die Tabelle UserLogs mit den Spalten: account_number, action, timestamp usw. Die Kombination aus account_number und timestamp 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.

question mark

Was stellt das Konzept der Atomizität im Kontext von Datenbanktransaktionen sicher?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 4.35

bookAtomaritä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 und balance;

  • die Tabelle UserLogs mit den Spalten: account_number, action, timestamp usw. Die Kombination aus account_number und timestamp 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.

question mark

Was stellt das Konzept der Atomizität im Kontext von Datenbanktransaktionen sicher?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 3
some-alt