Name
Der Name, den der neue Trigger erhalten soll. Dieser muss sich von dem Namen eines anderen Triggers für dieselbe Tabelle unterscheiden. Der Name kann nicht schema-qualifiziert sein – der Trigger erbt das Schema seiner Tabelle. Für einen Constraint-Trigger ist dies auch der Name, der zu verwenden ist, wenn das Verhalten des Triggers mit SET CONSTRAINTS geändert wird.
BEFORE
AFTER
INSTEAD OF
Bestimmt, ob die Funktion vor, nach oder anstelle des Ereignisses aufgerufen wird. Ein Constraint-Trigger kann nur als AFTER angegeben werden.
Ereignis
Eines von INSERT, UPDATE, DELETE oder TRUNCATE; dies gibt das Ereignis an, das den Trigger auslöst. Mehrere Ereignisse können mit OR angegeben werden.
Für UPDATE-Ereignisse ist es möglich, eine Liste von Spalten mit dieser Syntax anzugeben:
UPDATE OF column_name1
Der Trigger wird nur ausgelöst, wenn mindestens eine der aufgelisteten Spalten als Ziel des UPDATE-Befehls erwähnt wird.
INSTEAD OF UPDATE-Ereignisse unterstützen keine Listen von Spalten.
table
Der Name (optional schema-qualifiziert) der Tabelle oder Ansicht, für die der Trigger gilt.
referenced_table_name
Der (möglicherweise schema-qualifizierte) Name einer anderen Tabelle, auf die die Einschränkung verweist. Diese Option wird für Fremdschlüssel-Constraints verwendet und wird für den allgemeinen Gebrauch nicht empfohlen. Dies kann nur für Constraint-Trigger angegeben werden.
DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED
Der Standardzeitpunkt des Triggers. Siehe die CREATE TABLE-Dokumentation für Details zu diesen Beschränkungsoptionen. Dies kann nur für Constraint-Trigger angegeben werden.
FOR EACH ROW
FOR EACH STATEMENT
Dies gibt an, ob die Trigger-Prozedur einmal für jede vom Trigger-Ereignis betroffene Zeile oder nur einmal pro SQL-Anweisung ausgelöst werden soll. Wenn keine der beiden Angaben gemacht wird, ist FOR EACH STATEMENT der Standard. Constraint-Trigger können nur FOR EACH ROW angegeben werden.
condition
Ein boolescher Ausdruck, der bestimmt, ob die Triggerfunktion tatsächlich ausgeführt wird. Wenn WHEN angegeben ist, wird die Funktion nur aufgerufen, wenn die Bedingung den Wert true liefert. In FOR EACH ROW-Triggern kann sich die WHEN-Bedingung auf Spalten der alten und/oder neuen Zeilenwerte beziehen, indem OLD.column_name bzw. NEW.column_name geschrieben wird. Natürlich können sich INSERT-Trigger nicht auf OLD und DELETE-Trigger nicht auf NEW beziehen.
INSTEAD OF-Trigger unterstützen keine WHEN-Bedingungen.
Zurzeit können WHEN-Ausdrücke keine Unterabfragen enthalten.
Beachten Sie, dass bei Constraint-Triggern die Auswertung der WHEN-Bedingung nicht aufgeschoben wird, sondern sofort nach der Durchführung der Zeilenaktualisierungsoperation erfolgt. Wenn die Bedingung nicht als wahr ausgewertet wird, wird der Trigger nicht für die verzögerte Ausführung in die Warteschlange gestellt.
function_name
Eine vom Benutzer bereitgestellte Funktion, die so deklariert ist, dass sie keine Argumente annimmt und den Typ trigger zurückgibt, und die ausgeführt wird, wenn der Trigger ausgelöst wird.
arguments
Eine optionale kommagetrennte Liste von Argumenten, die der Funktion bereitgestellt werden, wenn der Trigger ausgeführt wird. Die Argumente sind literalisierte Stringkonstanten. Einfache Namen und numerische Konstanten können hier auch geschrieben werden, sie werden aber alle in Strings umgewandelt. Bitte prüfen Sie die Beschreibung der Implementierungssprache der Triggerfunktion, um herauszufinden, wie auf diese Argumente innerhalb der Funktion zugegriffen werden kann; dies kann sich von normalen Funktionsargumenten unterscheiden.