Rückgabe von Triggerfunktionen in Postrge

Do Al Bonsch

Grünschnabel
Moin.

Ich kämpfe hier gerade etwas mit Triggern unter Postgre mit Pl/pgSQL.

Nur eins ist mir noch nicht klar geworden.
Wenn ich in Postgre nen Trigger schreiben möchte lege ich eine Triggerfunktion an die einen Trigger als Rückgabewert hat.

Dann create ich einen Trigger und lass diese Funktion ausführen. Das ist soweit klar.

Was muss ich allerdings in der Triggerfunktion denn genau zurück geben ?
In einer Funktion wir einfach NEW zurückgegeben.

Muss ich da überhaupt etwas zurückgeben ?
Wertet der Trigger die Rückgabe der Funktion überhaupt aus ?

Gruß Sono

Nachtrag : Keine 2 Minuten weitergesucht und die Lösung vor der Nase gefunden :

Eine Triggerfunktion muss entweder den NULL-Wert oder einen Record- oder Zeilentypwert zurückgeben, der genau die Struktur der Tabelle hat, die den Trigger ausgelöst hat. BEFORE-Trigger können den NULL-Wert zurückgeben um dem Triggermanager anzuzeigen, dass der Rest der Operation für diese Zeile ausgelassen werden soll (das heißt, weitere Trigger werden nicht ausgelöst und das INSERT/UPDATE/DELETE findet in dieser Zeile nicht statt). Wenn nicht der NULL-Wert zurückgegeben wird, dann geht die Operation weiter. Wenn ein Zeilenwert zurückgegeben wird, der sich vom ursprünglichen Wert von NEW unterscheidet, dann verändert sich dadurch die Zeile, die eingefügt oder aktualisiert wird. Sie können einzelne Werte direkt in NEW ersetzen und NEW zurückgeben oder Sie können eine ganz neue Zeile aufbauen und zurückgeben.

Der Rückgabewert eines AFTER-Trigger wird nicht beachtet; Sie können also genauso gut den NULL-Wert zurückgeben. Aber ein AFTER-Trigger kann die ganze Operation abbrechen, indem er einen Fehler auslöst.

Trotzdem danke
 
Zuletzt bearbeitet:
Zurück