CREATETRIGGER

name

Namnet på den nya triggern. Namnet måste skilja sig från namnet på alla andra utlösare för samma tabell. Namnet kan inte vara schemakvalificerat – utlösaren ärver schemat för sin tabell. För en utlösare med begränsningar är detta också det namn som ska användas när du ändrar utlösarens beteende med hjälp av SET CONSTRAINTS.

BEFORE
AFTER
INSTEAD OF

Destinerar om funktionen ska anropas före, efter eller i stället för händelsen. En utlösare för begränsningar kan endast anges som AFTER.

event

En av INSERT, UPDATE, DELETE eller TRUNCATE; här anges den händelse som utlöser utlösaren. Flera händelser kan anges med OR.

För UPDATE-händelser är det möjligt att ange en lista med kolumner med den här syntaxen:

UPDATE OF column_name1 

Upplösaren utlöses endast om minst en av de angivna kolumnerna nämns som mål för UPDATE-kommandot.

Händelserna INSTEAD OF UPDATE stöder inte listor över kolumner.

table

Namnet (eventuellt schemakvalificerat) på tabellen eller vyn som utlösaren gäller för.

referenced_table_name

Namnet (eventuellt schemakvalificerat) på en annan tabell som refereras av begränsningen. Det här alternativet används för begränsningar med utländska nycklar och rekommenderas inte för allmän användning. Detta kan endast anges för utlösare för begränsningar.

DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED

Den förvalda tidpunkten för utlösaren. Se dokumentationen om CREATE TABLE för mer information om dessa begränsningsalternativ. Detta kan endast anges för utlösare med begränsningar.

FOR EACH ROW
FOR EACH STATEMENT

Detta anger om utlösarproceduren ska utlösas en gång för varje rad som påverkas av utlösarhändelsen, eller bara en gång per SQL-meddelande. Om ingetdera anges är FOR EACH STATEMENT standardvärdet. Utlösare med begränsningar kan endast anges FOR EACH ROW.

condition

Ett boolskt uttryck som bestämmer om utlösarfunktionen faktiskt kommer att exekveras. Om WHEN anges kommer funktionen endast att anropas om villkoret returnerar sant. I FOR EACH ROW-utlösare kan WHEN-villkoret hänvisa till kolumner i de gamla och/eller nya radvärdena genom att skriva OLD.column_name respektive NEW.column_name. INSERT-utlösare kan naturligtvis inte hänvisa till OLD och DELETE-utlösare kan inte hänvisa till NEW.

INSTEAD OF-utlösare har inte stöd för WHEN-villkor.

För närvarande kan WHEN-uttryck inte innehålla underfrågor.

Notera att för begränsningsutlösare skjuts inte utvärderingen av WHEN-villkoret upp, utan sker omedelbart efter att raduppdateringen har utförts. Om villkoret inte utvärderas som sant ställs utlösaren inte i kö för uppskjuten exekvering.

function_name

En funktion som tillhandahålls av användaren och som deklareras som en funktion som inte tar emot några argument och som returnerar typen trigger, och som exekveras när utlösaren utlöses.

arguments

En valfri kommaseparerad lista över argument som ska tillhandahållas funktionen när utlösaren exekveras. Argumenten är bokstavliga strängkonstanter. Enkla namn och numeriska konstanter kan också skrivas här, men de kommer alla att konverteras till strängar. Kontrollera beskrivningen av implementeringsspråket för utlösarfunktionen för att ta reda på hur dessa argument kan nås inom funktionen; det kan skilja sig från normala funktionsargument.

Lämna ett svar

Din e-postadress kommer inte publiceras.