Database Reference
In-Depth Information
Sprachgebrauch, gibt sie das Ergebnis einer Aggregatfunktion über ( OVER )
einen Teil (ein Fenster, PARTITION ) der Ergebnismenge zurück.
Transaktionen
Transaktionen sind das Konsistenz-Bollwerk relationaler Datenbanken. Al-
les oder nichts lautet das Motto bei Transaktionen. Sie stellen sicher, dass
jeder Befehl in einer Folge von Befehlen auch ausgeführt wird. Geht dabei
irgendetwas schief, wird alles wieder so zurückgedreht (Rollback), als wäre
nie etwas passiert.
PostgreSQL-Transaktionen sind ACID-konform. Das steht für atomisch (Ato-
mic, entweder alle Operationen sind erfolgreich oder keine), konsistent (Con-
sistent, die Daten sind in einem „guten“ Zustand - es gibt keine inkonsisten-
ten Zustände), isoliert (Isolated, Transaktionen behindern sich nicht gegen-
seitig) und beständig (Durable, eine bestätigte Transaktion ist sicher, selbst
nach einem Server-Absturz). Bitte beachten Sie, dass Konsistenz bei ACID
eine andere Bedeutung hat als bei CAP (das in Anhang 2, Das CAP-Theorem ,
auf Seite 347 behandelt wird).
Wir können jede Transaktion in einen BEGIN TRANSACTION -Block packen. Um
die Atomizität zu prüfen, heben wir die Transaktion mit dem ROLLBACK -Befehl
wieder auf.
Zwangsläuige Transaktionen
Bis jetzt wurde jeder von uns in psql ausgeführte Befehl implizit in eine Transaktion
gepackt. Wenn Sie einen Befehl wie DELETE FROM account WHERE total < 20; aus-
führen und die Datenbank stürzt auf halber Strecke ab, dann bleiben Sie nicht auf
einer halb gelöschten Tabelle sitzen. Beim Neustart des Datenbankservers erfolgt
ein Rollback des Befehls.
BEGIN TRANSACTION;
DELETE FROM events;
ROLLBACK;
SELECT * FROM events;
Alle Events bleiben erhalten. Transaktionen sind nützlich, wenn Sie zwei Ta-
bellen modifizieren, die synchron bleiben müssen. Das klassische Beispiel ist
das Kontensystem einer Bank, bei dem Geld von einem Konto auf ein anderes
transferiert wird:
 
Search WWH ::




Custom Search