Weiter Zurück Inhalt

6. Transaktionen

Will Kunde A an Kunde B Geld überweisen, so sind 2 Buchungen nötig. Schlecht wäre es, wenn zwischen den beiden Buchungen es zu einem Stromausfall käme. Dafür verwenden wir also eine Transaktion, um diese beiden Buchungen in einer Einheit durchzuführen.

Wir schreiben einfach eine Funktion in der Sprache SQL. Alles innerhalb einer Funktion ist automatisch auch innerhalb einer Transaktion.

001 create or replace function transfer(von int, nach int, numeric(10,2), text varchar) returns bool language sql as $$
002 	insert into buchungen (kontonr, ts, typ, wert, text) values ($1, now(), 'A', $3, $4);
003 	insert into buchungen (kontonr, ts, typ, wert, text) values ($2, now(), 'Z', $3, $4);
004 	select true;
005 $$;
006 
Download transfer.sql

Was passiert, wenn wir erst bei B das Geld einzahlen, und dann erst bei A abziehen, und bei A kommt es zu einer Überziehung des Kontos? Nun, probieren wir es aus!


Weiter Zurück Inhalt