CREATETRIGGER

name

Det navn, der skal gives den nye trigger. Dette skal være forskelligt fra navnet på enhver anden trigger for den samme tabel. Navnet kan ikke være skema-kvalificeret – udløseren arver skemaet for sin tabel. For en udløser med begrænsninger er dette også det navn, der skal bruges, når triggerens adfærd ændres ved hjælp af SET CONSTRAINTS.

BEFORE
AFTER
INSTEAD OF

Destinerer, om funktionen skal kaldes før, efter eller i stedet for hændelsen. En udløser for en begrænsning kan kun angives som AFTER.

begivenhed

En af INSERT, UPDATE, DELETE eller TRUNCATE; dette angiver den begivenhed, der udløser udløseren. Flere hændelser kan angives ved hjælp af OR.

For UPDATE-hændelser er det muligt at angive en liste over kolonner ved hjælp af denne syntaks:

UPDATE OF column_name1 

Triggeren udløses kun, hvis mindst en af de anførte kolonner er nævnt som et mål for UPDATE-kommandoen.

INSTEAD OF UPDATE-hændelser understøtter ikke lister over kolonner.

table

Navnet (eventuelt skema-kvalificeret) på den tabel eller visning, som udløseren gælder for.

referenced_table_name

Det (eventuelt skema-kvalificerede) navn på en anden tabel, som begrænsningen henviser til. Denne indstilling bruges til foreign-key-begrænsninger og anbefales ikke til generel brug. Dette kan kun angives for udløsere med begrænsning.

DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED

Den standardmæssige timing for udløseren. Se dokumentationen om CREATE TABLE for at få oplysninger om disse begrænsningsmuligheder. Dette kan kun angives for begrænsningstriggers.

FOR EACH ROW
FOR EACH STATEMENT

Dette angiver, om triggerproceduren skal udløses én gang for hver række, der påvirkes af triggerhændelsen, eller kun én gang pr. SQL-anvisning. Hvis ingen af delene er angivet, er FOR EACH STATEMENT standardindstillingen. Constraint-triggers kan kun angives FOR EACH ROW.

condition

Et boolsk udtryk, der bestemmer, om triggerfunktionen faktisk skal udføres. Hvis WHEN er angivet, vil funktionen kun blive kaldt, hvis betingelsen returnerer sandt. I FOR EACH ROW-udløsere kan WHEN-betingelsen henvise til kolonner i de gamle og/eller nye rækkeværdier ved at skrive henholdsvis OLD.column_name eller NEW.column_name. INSERT-udløsere kan naturligvis ikke henvise til OLD, og DELETE-udløsere kan ikke henvise til NEW.

INSTEAD OF-udløsere understøtter ikke WHEN-betingelser.

På nuværende tidspunkt kan WHEN-udtryk ikke indeholde underafspørgsler.

Bemærk, at for begrænsningstriggere udskydes evalueringen af WHEN-betingelsen ikke, men finder sted umiddelbart efter, at rækkeopdateringsoperationen er udført. Hvis betingelsen ikke evalueres til sand, sættes udløseren ikke i kø til udskudt udførelse.

function_name

En brugerleveret funktion, der er erklæret som værende uden argumenter og returnerende af typen trigger, og som udføres, når udløseren udløses.

arguments

En valgfri kommasepareret liste over argumenter, der skal leveres til funktionen, når udløseren udføres. Argumenterne er bogstavelige strengkonstanter. Simple navne og numeriske konstanter kan også skrives her, men de vil alle blive konverteret til strings. Tjek beskrivelsen af implementeringssproget for triggerfunktionen for at finde ud af, hvordan disse argumenter kan tilgås i funktionen; det kan være anderledes end normale funktionsargumenter.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.