CREATETRIGGER

name

Il nome da dare al nuovo trigger. Questo deve essere distinto dal nome di qualsiasi altro trigger per la stessa tabella. Il nome non può essere qualificato dallo schema – il trigger eredita lo schema della sua tabella. Per un trigger di vincoli, questo è anche il nome da usare quando si modifica il comportamento del trigger usando SET CONSTRAINTS.

BEFORE
AFTER
INSTEAD OF

Determina se la funzione è chiamata prima, dopo o al posto dell’evento. Un trigger di vincolo può essere specificato solo come AFTER.

evento

Uno tra INSERT, UPDATE, DELETE o TRUNCATE; questo specifica l’evento che attiverà il trigger. Eventi multipli possono essere specificati usando OR.

Per gli eventi UPDATE, è possibile specificare una lista di colonne usando questa sintassi:

UPDATE OF column_name1 

Il trigger si attiva solo se almeno una delle colonne elencate è menzionata come destinazione del comando UPDATE.

Gli eventi INSTEAD OF UPDATE non supportano liste di colonne.

table

Il nome (opzionalmente qualificato dallo schema) della tabella o della vista per cui è stato attivato il trigger.

referenced_table_name

Il nome (possibilmente qualificato dallo schema) di un’altra tabella referenziata dal vincolo. Questa opzione è usata per i vincoli con chiave esterna e non è raccomandata per un uso generale. Questo può essere specificato solo per i trigger di vincoli.

DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED

Il tempo predefinito del trigger. Vedere la documentazione di CREATE TABLE per i dettagli di queste opzioni di vincolo. Questo può essere specificato solo per i trigger di vincolo.

FOR EACH ROW
FOR EACH STATEMENT

Questo specifica se la procedura di trigger deve essere sparata una volta per ogni riga interessata dall’evento di trigger, o solo una volta per ogni istruzione SQL. Se nessuno dei due è specificato, FOR EACH STATEMENT è il default. I trigger di vincolo possono essere specificati solo FOR EACH ROW.

condizione

Un’espressione booleana che determina se la funzione di trigger sarà effettivamente eseguita. Se WHEN è specificato, la funzione sarà chiamata solo se la condizione ritorna vera. Nei trigger FOR EACH ROW, la condizione WHEN può riferirsi alle colonne dei valori della vecchia e/o della nuova riga scrivendo rispettivamente OLD.column_name o NEW.column_name. Naturalmente, i trigger INSERT non possono fare riferimento a OLD e i trigger DELETE non possono fare riferimento a NEW.

INSTEAD OF non supportano le condizioni WHEN.

Attualmente, le espressioni WHEN non possono contenere subquery.

Nota che per i trigger di vincoli, la valutazione della condizione WHEN non è differita, ma avviene immediatamente dopo l’operazione di aggiornamento della riga. Se la condizione non valuta true, allora il trigger non è accodato per l’esecuzione differita.

function_name

Una funzione fornita dall’utente che è dichiarata senza argomenti e che ritorna di tipo trigger, che viene eseguita quando il trigger scatta.

arguments

Un elenco opzionale separato da virgole di argomenti da fornire alla funzione quando il trigger viene eseguito. Gli argomenti sono costanti letterali di stringa. Anche i nomi semplici e le costanti numeriche possono essere scritti qui, ma saranno tutti convertiti in stringhe. Si prega di controllare la descrizione del linguaggio di implementazione della funzione trigger per scoprire come questi argomenti possono essere accessibili all’interno della funzione; potrebbe essere diverso dai normali argomenti della funzione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.