Triggers (MySQL 5.0.2)

Un Trigger č un oggetto del database che, associato ad una tabella, si attiva  al presentarsi di un particolare evento (azione intrapresa) sulla particolare tabella.

Un utilizzo classico č quello di loggare, tramite un trigger che inserisce record in una tabella preposta, le varie movimentazioni (insert, update, delete) dei record di una tabella molto critica per il sistema.
La creazione di un trigger introdotta a partire dalla versione MySQL 5.0.2, si basa sulla sintassi
CREATE TRIGGER nome_del_trigger BEFORE|AFTER INSERT|UPDATE|DELETE
    ON tabella FOR EACH ROW istruzioni

Come si vede il trigger deve essere associato ad una tabella, questa deve essere una tabella "reale", non quindi una tabella temporanea o una view.
L'esecuzione del trigger puņ avvenire prima o dopo l'evento, questo viene indicato dalla scelta dell'opzione BEFORE o AFTER mentre l'evento scatenante puņ essere un operazione di INSERT, di UPDATE oppure di DELETE. Si noti come non sia possibile attivare due distinti trigger sulla stessa azione e sullo stesso momento: ad esempio non possiamo avere due trigger BEFORE INSERT sulla stessa tabella, possiamo perņ attivarne uno di tipo BEFORE INSERT e uno di tipo AFTER INSERT.
L'azione da intraprendere quando il trigger viene attivato č specificata dopo avere indicato FOR EACH ROW, questa puņ essere un singolo statement oppure un blocco di istruzioni delimitato, al solito, da BEGIN ... END.
Di interesse il fatto che all'interno della definizione di un trigger č possibile fare riferimento ai valori che un campo assume prima che sia modificato o cancellato: in questo caso si utilizza OLD.nome_campo, oppure il valore  che il campo assume dopo che č stata inserita una nuova riga oppure modificata una esistente: NEW.nome_campo.

Privacy Policy