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

Trigger und Funktion



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



Home | Main Index | Thread Index

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