CREATETRIGGER

name

Numele pe care trebuie să îl dați noului trigger. Acesta trebuie să fie distinct de numele oricărui alt trigger pentru aceeași tabelă. Numele nu poate fi calificat în funcție de schemă – declanșatorul moștenește schema tabelului său. Pentru un declanșator de constrângeri, acesta este, de asemenea, numele care trebuie utilizat atunci când se modifică comportamentul declanșatorului folosind SET CONSTRAINTS.

BEFORE
AFTER
INSTEAD OF

Determină dacă funcția este apelată înainte, după sau în locul evenimentului. Un declanșator de constrângere poate fi specificat numai ca AFTER.

eveniment

Unul dintre INSERT, UPDATE, DELETE sau TRUNCATE; acesta specifică evenimentul care va declanșa declanșatorul. Se pot specifica mai multe evenimente folosind OR.

Pentru evenimentele UPDATE, este posibil să se specifice o listă de coloane folosind această sintaxă:

UPDATE OF column_name1 

Dispozitivul se va declanșa numai dacă cel puțin una dintre coloanele din listă este menționată ca țintă a comenzii UPDATE.

Evenimentele INSTEAD OF UPDATE nu acceptă liste de coloane.

table

Numele (eventual calificat în funcție de schemă) al tabelei sau al vizualizării pentru care se declanșează declanșatorul.

referenced_table_name

Numele (eventual calificat în funcție de schemă) al unei alte tabele la care face referire constrângerea. Această opțiune este utilizată pentru constrângerile cu cheie străină și nu este recomandată pentru utilizare generală. Aceasta poate fi specificată numai pentru declanșatoarele de constrângeri.

DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED

Timparea implicită a declanșatorului. Consultați documentația CREATE TABLE pentru detalii privind aceste opțiuni de constrângere. Acest lucru poate fi specificat numai pentru declanșatoarele de constrângere.

FOR EACH ROW
FOR EACH STATEMENT

Aceasta specifică dacă procedura de declanșare trebuie să fie declanșată o dată pentru fiecare rând afectat de evenimentul de declanșare sau doar o dată pentru fiecare instrucțiune SQL. Dacă nu se specifică niciuna dintre cele două, FOR EACH STATEMENT este valoarea implicită. Declanșatoarele de constrângeri pot fi specificate numai FOR EACH ROW.

condiție

O expresie booleană care determină dacă funcția de declanșare va fi executată efectiv. Dacă se specifică WHEN, funcția va fi apelată numai dacă condiția se întoarce adevărată. În declanșatoarele FOR EACH ROW, condiția WHEN se poate referi la coloanele din valorile rândurilor vechi și/sau noi prin scrierea OLD.column_name, respectiv NEW.column_name. Bineînțeles, declanșatoarele INSERT nu se pot referi la OLD și declanșatoarele DELETE nu se pot referi la NEW.

Declanșatoarele INSTEAD OF nu acceptă condițiile WHEN.

În prezent, expresiile WHEN nu pot conține subinterogări.

Rețineți că pentru declanșatoarele de constrângere, evaluarea condiției WHEN nu este amânată, ci are loc imediat după efectuarea operației de actualizare a rândului. Dacă condiția nu este evaluată la true, atunci declanșatorul nu este pus în coadă pentru execuție amânată.

function_name

O funcție furnizată de utilizator care este declarată ca fiind fără argumente și care returnează tipul trigger, care se execută atunci când declanșatorul se declanșează.

arguments

O listă opțională de argumente, separate prin virgulă, care urmează să fie furnizate funcției atunci când declanșatorul este executat. Argumentele sunt constante literale de tip șir de caractere. Aici pot fi scrise și nume simple și constante numerice, dar toate vor fi convertite în șiruri de caractere. Vă rugăm să verificați descrierea limbajului de implementare a funcției de declanșare pentru a afla cum pot fi accesate aceste argumente în cadrul funcției; s-ar putea să fie diferit de argumentele normale ale funcției.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.