Thema: Delphi Trigger rekursiv

Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#1

Trigger rekursiv

  Alt 19. Jul 2009, 14:41
Datenbank: FB • Version: 2.1 • Zugriff über: IBX
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
  Mit Zitat antworten Zitat