Re: Trigger und Funktion

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Cc: udono <udono(at)gmx(dot)net>
Subject: Re: Trigger und Funktion
Date: 2007-03-08 07:58:52
Message-ID: 200703080858.53194.peter_e@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

udono wrote:
> Es soll die Regel gelten, dass nur Buchungssätze in die Tabelle
> acc_trans dürfen (UPDATE, INSERT), deren Summe der Einzelbeträge
> (amount) aller Teilbuchungen (trans_id) 0 ergibt.

Also die offizielle SQL-Lösung wäre hier wohl eine "Assertion", die in
der Art eines Check-Constraints globale Zustände prüfen kann, aber
PostgreSQL bietet das nicht an. Daher muss man hier auf jedem Fall eine
eigene Lösung basteln. Eine Prozedur/Funktion, die das Einfügen
übernimmt, wie von jemandem anders vorgeschlagen, scheint mir auch sehr
sinnvoll.

Es ist außerdem zu beachten, dass keine der von PostgreSQL
implementierten Transaktionsisolationsmodi bei der anstehenden Prüfung
(etwa SELECT sum(amount) FROM acc_trans WHERE trans_id = $var) eine
korrekte Isolation bieten, weswegen die Tabelle mit SHARE ROW EXCLUSIVE
MODE manuell gesperrt werden muss.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message A. Kretschmer 2007-03-08 10:28:05 Re: Trigger und Funktion
Previous Message Matthias Zirngibl 2007-03-08 07:08:39 Re: Trigger und Funktion