- Sintassi
La dichiarazione di un trigger si presenta in questo modo:
CREATE TRIGGER nome_del_trigger
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON nome_della_tabella
FOR EACH ROW
codice_SQL_da_applicare_con_il_trigger
- La prima linea indica il nome del trigger
- La seconda linea determina il tempo di esecuzione del trigger
- La terza linea introduce il tipo di query SQL che genererà l'esecuzione del trigger. La query può essere solo di tipo esecutivo quindi INSERT, UPDATE, DELETE ma non SELECT. In base al tipo di query ci troveremo a poter intervenire sul record già presente nel database (nel caso ad esempio di una query UPDATE o DELETE) oppure sul record nuovo che andremo ad inserire o a sostituire (query UPDATE o INSERT). Da notare che INSERT non rappresenta soltanto le query di tipo INSERT, bensì tutte le query che inseriscono dati ex-novo come LOAD DATA o REPLACE in caso di un record nuovo. Allo stesso modo vanno interpretati UPDATE e DELETE
- La quarta linea specifica la tabella da monitorare per attivare il trigger
- La quinta linea illustra l'individualità del trigger che infatti si applica ad ogni riga singolarmente e non a tutta la tabella nel suo insieme
- La sesta linea infine rappresenta il codice SQL da eseguire all'attivazione dell'evento
- Il codice da eseguire
Il codice SQL da eseguire all'attivazione del trigger devono essere istruzioni seguite ognuna da punto e virgola.
- Esempio di utilizzo
Nel seguente esempio creiamo un trigger chiamato `nome_trigger` che, ad ogni inserimento nella tabella `nome_db`.`nome_tabella`, esegue il codice SQL contenuto tra le istruzioni "BEGIN" ed "END".
DELIMITER $$
DROP TRIGGER `nome_db`.`nome_trigger`$$
CREATE
TRIGGER `nome_trigger` BEFORE INSERT ON `nome_tabella`
FOR EACH ROW BEGIN
DECLARE cod INTEGER;
SELECT MAX(nome_campo)
INTO cod
FROM nome_tabella
WHERE [condizioni];
SET NEW.nome_campo=cod+1;
END;$$
DELIMITER;
Nessun commento:
Posta un commento