Trigger und Funktion

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

Responses

Browse pgsql-de-allgemein by date

  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