Hallo alle,
ich nutze jetzt erstmals Trigger und Stored Procedure ... (muss man ja gar keine Angst vor haben
und mit IBExpert geht das ja fast wie von alleine).
Jetzt will ich aber nach jeder Änderung in einer Tabelle alle Datensätze neu anpassen. Als Beispiel sei mal gegeben: "MyTable" mit den Feldern ID, A, B, und Pos.
Nach jeder Änderung in MyTable soll der Wert in Pos für alle Datensätze neu berechnet werden.
Dafür habe ich eine stored procedure CalcAllPos, erstellt, die das erledigt.
Nun rufe ich diese procedure in einem Trigger AfterPostUpdateDelete auf, was zu einem rekursiven Aufruf des Triggers und der Prozedur und einem Stacküberlauf führt.
Wie löst man das Problem am besten?
Eine Definition des neues Wertes im Trigger über new.Pos kann ich nicht verwenden, da ALLE Datensätze der Tabelle neu berechnet werden sollen.
Globale Variablen (als Flag) unterstützt
FB ja offenbar nicht.
Nun könnte ich vielleicht ein Tabellenfeld dafür einführen oder ich könnte die Pos-Daten in eine eigene Tabelle "MyTablePos" auslagern und über eine ID zur "MyTable" verbinden. Änderungen in "MyTablePos" würden dann nicht noch einmal die Trigger von MyTable auslösen.
Gibt es aber vielleicht einen besseren Weg?
Stahli