Peter Gulutzan, Software Architect alla MySQL AB, è uno degli sviluppatori di MySQL 5,
egli spiega la presenza dei Triggers nell'ultima versione di questo DBMS adducendo come motivo pił importante
il fatto che essi siano stati richiesti dagli utilizzatori stessi.
La novità è particolarmente importante e
non sarà difficile comprendere per quale motivo ci sia stata una pressione per questa innovazione da parte degli
utenti finali.
I Triggers non sono una componente "fisica" di MySQL 5 ma una novità che
và ad interessare la sintassi stessa del linguaggio SQL; attraverso di essi possimo eseguire determinate
istruzioni in concomitanza alle operazioni di inserimento, aggiornamento e cancellazione dei dati allocati nelle tabelle
delle basi di dati. Vengono quindi chiamati in causa i comandi SQL: INSERT, UPDATE e DELETE.
Immaginiamo di dover aggiornare dei dati inseriti in una tabella, UPDATE andrà a modificare le
informazioni presenti quando richiesto e ad inserirne di nuove dove non ve ne siano; si pensi quanto sarebbe comodo in questo
caso possedere uno strumento in grado di evitare la duplicazione dei dati (ridondanza), oppure quanto potrebbe tornare utile
evitare il caricamento di dati che superano o sono al di sotto di un determinato valore, infine, pensiamo alla
possibilità di non allocare determinate tipologie di dati quando presentano specifiche caratteristiche.
Ebbene,
queste operazioni ed altre ancora sono rese possibili tramite DBMS dall'introduzione dei Triggers.
I Triggers per esempio, possono risultare importantissimi per applicativi da introdurre in campo finanziario: un
cliente richiede un bonifico a favore di terzi tramite la sua interfaccia per l'home banking, l'ordine potrà
per esempio essere inserito o meno nell'apposita tabella soltanto dopo un controllo sulla sua disponibilità di
liquidi, diversamente il dato non verrà allocato in quanto mancano le condizioni necessarie alla soddisfazione della
richiesta. Quindi, l'output desiderato viene generato soltanto se l'input rispetta le caratteristiche stabilite a
priori.
Alla luce dell'esempio appena esposto, risulta chiaro che i Triggers presentano numerose
affinità con le Stored Procedures e in buona parte ne seguono la logica e le possibilità di
applicazione, tanto che essi vengono definiti come un particolare tipo di stored procedure che viene eseguita nel
momento in cui si modificano i dati contenuti nella tabella di un database.
Attraverso i Triggers è
consentito introdurre clausole di controllo, cicli, loop, istruzioni di iterazione, è inoltre possibile dichiarare
variabili ed assegnare ad esse dei valori, stabilire condizioni, monitorare il flusso dei dati nelle sessioni di lavoro.
Di seguito riportiamo un semplice esempio che mostra la sintassi utile alla creazione di un
trigger:
CREATE TRIGGER ctrl_somma BEFORE INSERT ON tabellaCome si ha modo di notare, il trigger viene creato tramite l'imposizione di un nome ("CREATE TRIGGER ctrl_somma") e l'associazione alla tabella su cui esso dovrà agire.
FOR EACH ROW SET @dato1 = @dato2 + NEW.dato;