From: | udono <udono(at)gmx(dot)net> |
---|---|
To: | "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Trigger und Funktion |
Date: | 2007-03-07 22:05:24 |
Message-ID: | 45EF3724.1030303@gmx.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Hallo Liste,
hab mal wieder ein Problem, das meinen Horizont etwas überschreitet.
In einer OS Buchhaltung mit Postgresanbindung würde ich gerne etwas
mehr Verantwortung für die Datenintegrität auf die Datenbank übertragen.
Ich habe eine Tabelle acc_trans, die alle im System gebuchten
Beträge beinhaltet. Jeder Buchungssatz besteht aus verschiedenen
Buchungen mit identischer id und verschiedenen Beträgen.
Tabelle acc_trans:
trans_id | amount | ...
----------+------------+----
13 | 100.00000 | ...
13 | -107.00000 | ...
13 | 7.00000 | ...
13 | 107.00000 | ...
13 | -107.00000 | ...
14 | 100.00000 | ...
14 | 7.00000 | ...
14 | -107.00000 | ...
14 | 107.00000 | ...
14 | -107.00000 | ...
... | ... | ...
Die Buchungssätze werden mittels Transaktionen in die Tabelle
acc_trans gebracht.
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.
Wie aber weiss ich vor der Transaktion, das die Summe der
Teilbuchungen 0 ergibt?
Mit bspw. SELECT sum(amount) WHERE trans_id = 13 kann ich ja noch
nicht arbeiten, weil die Transaktion noch nicht commitet wurde und
ja auch vorher geprüft werden soll.
(Es stehen PL/pgSQL und PL/Perl zur Verfügung)
Vielleicht hat jemand von euch einen Tip?!
Viele Grüße
Udo Spallek
From | Date | Subject | |
---|---|---|---|
Next Message | A. Kretschmer | 2007-03-08 06:17:27 | Re: Trigger und Funktion |
Previous Message | A. Kretschmer | 2007-03-06 09:11:58 | Re: Trenner |