Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Trigger und Funktion



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/



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group