Re: Trigger und Funktion
Hallo Jürgen,
Jürgen E. Fischer schrieb:
On Wed, Mar 07, 2007 at 23:05:24 +0100, udono wrote:
Dazu gibt es doch bestimmt auch eine überordnete Tabelle trans in der
trans_id primary key ist. Da würde ich ansetzen.
In etwa ist das so. Wir haben mehrere Tabellen ar, ap, gl die als
Primärschlüssel die id aus meiner acc_trans tragen. Aber im Prinzip
ergeben diese Tabellen zusammen, die von dir beschriebene Tabelle
trans.
Du könntest dort ein Feld hinzufügen, dass aussagt, ob der Buchungssatz
abgeschlossen/gültig ist oder nicht.
Du legst also den Buchungssatz in trans initial mit false in dem Feld
an, fügst dann Deine Sätze in acc_trans ein und setzt das Feld danach
per UPDATE auf true.
Ja, damit könnte ich die Transaktionssicherheit noch etwas verbessern...
trans hat einen Trigger ON UPDATE, der bei der Transition von
false auf true überprüft, ob die Summe 0 ist und bei <>0 das Update
abbricht.
... ach, ok ich verstehe. Das hört sich auf jeden Fall gut an.
Aber dann habe ich in der acc_trans immer noch Buchungen stehen, die
ungültig sein können. Gut, der Trigger in trans ließe sich bestimmt
erweitern auf ein anschließendes Delete der fehlerhaften
Transaktionen...
Außerdem hat acc_trans noch einen Trigger, der UPDATE und DELETE nur
zuläßt, wenn in trans false steht. Vor Änderungen muss dann also trans
immer false gesetzt werden.
Ok, lauter gute Ideen!
Delete ist noch eine Thema für sich. Denn in der Buchhaltung gibt es
kein löschen von Daten als solches, sondern eher ein Storno, was ich
aber auch gern von der Datenbank verwaltet wissen würde (On delete
trigger).
In der Applikation dürftest Du dann nur noch die gültigen Buchungssätze
betrachten.
Nicht wirklich elegant, sollte aber funktionieren.
Bestens, vielen Dank! Deinen Ansatz werde ich mal austesten.
Viele Grüße
Udo Spallek
Home |
Main Index |
Thread Index