Homepage -> Guida MySQL

I Triggers


I trigger sono oggetti associati a tabelle, che vengono attivati nel momento in cui un determinato evento si verifica relativamente a quella tabella.

Quando definiamo un trigger, stabiliamo per quale evento deve essere attivato (inserimento di righe, modifiche o cancellazioni) e se deve essere eseguito prima o dopo tale evento; avremo quindi i seguenti tipi di trigger:



Il trigger stabilirà un'istruzione (o una serie di istruzioni) che saranno eseguite per ogni riga interessata dall'evento.

Ecco la sintassi per la creazione di un trigger:


CREATE TRIGGER nome tipo
   ON tabella FOR EACH ROW istruzioni


Il trigger è associato ad una tabella, ma fa parte di un database, per cui il suo nome deve essere univoco all'interno del db stesso.

È importante tener presente che, riferendosi ad inserimenti o a cancellazioni delle righe, non si intende necessariamente una istruzione INSERT o DELETE, ma qualsiasi operazione dalla quale scaturisca l'evento interessato.

Le istruzioni da eseguire all'attivazione del trigger possono essere una o più di una. In quest'ultimo caso si usa la sintassi per le istruzioni composte del tipo BEGIN .... END. Una volta creato, il trigger può essere eliminato con l'istruzione DROP TRIGGER:


DROP TRIGGER [database.]nome


Vediamo un esempio pratico di trigger:


CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
        IF NEW.amount < 0 THEN
                SET NEW.amount = 0;
        ELSEIF NEW.amount > 100 THEN
                SET NEW.amount = 100;
        END IF;
END;


Questo codice si attiva prima di ogni update sulla tabella account: su ognuna delle righe da modificare viene controllato il valore che sta per essere assegnato al campo amount, per verificare che sia compreso fra 0 e 100; in caso contrario viene riportato entro tali limiti.