CREATETRIGGER

naam

De naam om de nieuwe trigger te geven. Deze moet verschillend zijn van de naam van een andere trigger voor dezelfde tabel. De naam kan niet schema-qualified zijn – de trigger erft het schema van zijn tabel. Voor een constraintrigger is dit ook de naam die moet worden gebruikt wanneer het gedrag van de trigger wordt gewijzigd met SET CONSTRAINTS.

BEFORE
AFTER
INSTEAD OF

Determineert of de functie wordt aangeroepen voor, na of in plaats van de gebeurtenis. Een constraintrigger kan alleen worden opgegeven als AFTER.

event

Een van INSERT, UPDATE, DELETE, of TRUNCATE; dit specificeert de gebeurtenis die de trigger zal afvuren. Meerdere gebeurtenissen kunnen worden gespecificeerd met OR.

Voor UPDATE-gebeurtenissen is het mogelijk een lijst van kolommen te specificeren met deze syntaxis:

UPDATE OF column_name1 

De trigger zal alleen afgaan als ten minste een van de vermelde kolommen wordt genoemd als een doel van het UPDATE-commando.

INSTEAD OF UPDATE events ondersteunen geen lijsten van kolommen.

table

De naam (optioneel schema-gekwalificeerd) van de tabel of view waar de trigger voor is.

referenced_table_name

De (eventueel schema-gekwalificeerde) naam van een andere tabel waarnaar verwezen wordt door de constraint. Deze optie wordt gebruikt voor foreign-key constraints en wordt niet aanbevolen voor algemeen gebruik. Dit kan alleen worden opgegeven voor constraintriggers.

DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED

De standaard timing van de trigger. Zie de CREATE TABLE documentatie voor details over deze constraint opties. Dit kan alleen worden opgegeven voor constraintriggers.

FOR EACH ROW
FOR EACH STATEMENT

Dit specificeert of de triggerprocedure eenmaal moet worden afgevuurd voor elke rij die wordt beïnvloed door de triggergebeurtenis, of slechts eenmaal per SQL-instructie. Als geen van beide is gespecificeerd, is FOR EACH STATEMENT de standaard. Constraintriggers kunnen alleen worden gespecificeerd VOOR ELKE RIJ.

voorwaarde

Een Booleaanse expressie die bepaalt of de trigger-functie daadwerkelijk zal worden uitgevoerd. Als WANNEER is gespecificeerd, zal de functie alleen worden aangeroepen als de voorwaarde waar is. In FOR EACH ROW triggers kan de WHEN conditie verwijzen naar kolommen van de oude en/of nieuwe rij waarden door respectievelijk OLD.column_name of NEW.column_name te schrijven. Uiteraard kunnen INSERT-triggers niet naar OLD verwijzen en DELETE-triggers niet naar NEW.

INSTEAD OF-triggers ondersteunen geen WHEN-condities.

Currently, WHEN expressions cannot contain subqueries.

Note that for constraint triggers, evaluation of the WHEN condition is not deferred, but occurs immediately after the row update operation is performed. Als de voorwaarde niet waar is, wordt de trigger niet in een wachtrij geplaatst voor uitgestelde uitvoering.

function_name

Een door de gebruiker ingevoerde functie die wordt gedeclareerd zonder argumenten en die het type trigger teruggeeft, en die wordt uitgevoerd wanneer de trigger afgaat.

arguments

Een optionele, door komma’s gescheiden lijst van argumenten die aan de functie moet worden meegegeven wanneer de trigger wordt uitgevoerd. De argumenten zijn letterlijke tekenreeksconstanten. Eenvoudige namen en numerieke constanten kunnen hier ook worden geschreven, maar ze zullen allemaal worden geconverteerd naar strings. Kijk in de beschrijving van de implementatietaal van de trigger-functie hoe deze argumenten binnen de functie benaderd kunnen worden; het kan anders zijn dan normale functie-argumenten.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.