Ich habe mir die Dokumentation von Postgresql-Triggern angeschaut , aber es scheint so Ich zeige nur Beispiele für Trigger auf Zeilenebene, aber ich kann kein Beispiel für einen Trigger auf Anweisungsebene finden.
Insbesondere ist es nicht ganz klar, wie man in den update / inserted Zeilen in einer einzigen Anweisung iteriert, da NEW
für einen einzelnen Datensatz ist.
OLD
und NEW
sind in einem Trigger auf Anweisungsebene nicht definiert. Pro Dokumentation:
NEW
Datentyp
RECORD
; Variable, die die neue Datenbankzeile fürINSERT
/UPDATE
-Operationen in Triggern auf Zeilenebene enthält. Diese Variable ist nicht zugewiesen in Statement-Level-Trigger und fürDELETE
-Operationen.
OLD
Datentyp RECORD; Variable, die die alte Datenbankzeile für Operationen
UPDATE
/DELETE
in Triggern auf Zeilenebene enthält. Diese Variable ist nicht zugewiesen in Statement-Level-Trigger und fürINSERT
-Operationen.
Fett Hervorhebung meins.
Das sind nicht sehr häufig. Ein nützliches Beispiel ist das Senden von Benachrichtigungen nach bestimmten DML-Befehlen.
Hier ist eine vereinfachte Version von dem, was ich benutze:
Tags und Links triggers postgresql plpgsql