Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Home ~ Php :: Le novità di MySQL 5: I Triggers :: Indice Php

Le novità di MySQL 5: I Triggers

Categoria: Php Inserito il: 05-12-2005 Stampa (7355 click)

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 tabella  
FOR EACH ROW SET @dato1 = @dato2 + NEW.dato;
Come 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.

La clausola BEFORE è molto importante in quanto stabilisce il momento d'azione del trigger, nel nostro esempio abbiamo deciso di attivarlo prima dell'allocazione dei record nella tabella ("BEFORE INSERT ON tabella FOR EACH ROW"). Naturalmente sarà possibile stabilire una condizione opposta introducendo la clausola antitetica AFTER.

INSERT è il comando che determina nel nostro caso l'attivazione del trigger per il controllo su ciascun record di dati, analogamente avremmo potuto utilizzare DELETE o UPDATE.
SET rappresenta l'azione del Trigger, che nell'esempio dovrà interessare ogni inserimento di nuovi record nella tabella sulla base dello statement "FOR EACH ROW". Quindi "NEW.dato" sarà il nuovo valore settato una volta passato il controllo del Trigger.

Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione, anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

Cerca nel sito
Per sito
Sviluppatore di applicazioni Web con competenze evolute nella progettazione delle basi di dati, autore per alcune delle pił importanti testate on line dedicate alla manualistica tecnica (HTML.it, MrWebmaster.it, Edit) e consulente per l'e-learning.
Tutte le categorie
Tutorial Random
Gestire gruppi e utenti in Linux
Gli utenti (users) di Linux sono in pratica gli utilizzatori del sistema operativo e delle risorse da esso gestite; ogni... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti