Seite 1 von 1

Rekursionen in Triggern vermeiden

Verfasst: Mi 30. Nov 2022, 11:08
von martin.koeditz
Hallo zusammen,

kennt jemand einen eleganten Weg, um Rekursionen in Triggern zu vermeiden?

Konkret habe ich einen geänderten Datensatz A. Diese Änderungen werden an Datensatz B übertragen. Da sich B aber nun auch geändert hat, versucht dieser auch A zu ändern. Ich habe bislang keine charmante Lösung für diese Probleme. In MSSQL gibt es ja TRIGGER_NESTLEVEL().

In den Monitoring-Tabellen gibt es den CALL_STACK. Ich weiß aber nicht, ob mir das hier weiterhelfen kann. Hat jemand eine Idee?

Dank und Gruß
Martin

Re: Rekursionen in Triggern vermeiden

Verfasst: Do 1. Dez 2022, 09:44
von bfuerchau
Wie wäre es mit RDB$Set_Context und RDB$Get_Context?
Aber auch der Nested Level beim SQL-Server kann da durchaus negativ sein.
Denn eigentlich musst du nur den zu ändernden Inhalt prüfen bevor du einen Update machst.
Alternativ kannst du auch die Where-Klausel ja ergänzen:

... where key.... and Fx <> NeuerInhalt

Somit löst dieser Update dann keinen Trigger aus.

Re: Rekursionen in Triggern vermeiden

Verfasst: Fr 2. Dez 2022, 09:18
von martin.koeditz
Wie wäre es mit RDB$Set_Context und RDB$Get_Context?
Gute Idee.
Alternativ kannst du auch die Where-Klausel ja ergänzen:

... where key.... and Fx <> NeuerInhalt

Somit löst dieser Update dann keinen Trigger aus.
Manchmal ist es zu einfach... :D

Danke dir.