|
|
Microsoft SQL ServerLEZIONI - I TRIGGER Gli eventi sono delle particolari procedure che avvengo in una determinata situazione del flusso del programma, queste procedure possono essere intercettate e modificate. Gli eventi del database sono chiamati trigger. Per esempio, quando cancelliamo una riga dalla tabella anagrafica, viene rilasciato un trigger. Così anche per la modifica e l'inserimento di dati o la modifica strutturale del database. Tipologie di triggerLe tipologie di trigger sono due:
Un trigger fornisce maggior controllo sulle modifiche dei dati. Un utile esempio è sulla conferma per evitare una cancellazione, DELETE, accidentale. I trigger forniscono un maggior controllo di validità dei dati. Potremmo usare un trigger per controllare un valore inserito, se, per esempio, è presente in un'altra tabella. Creazione di un trigger tramite T-SQLPer creare un trigger in SQL 2005 utilizziamo il linguaggio T-SQL. Listato 1. Creazione di un trigger per il controllo della data GO In questo primo esempio controlliamo se il valore della data di nascita, non è superiore o uguale ad oggi, altrimenti il nostro utente sarebbe un neonato. Potremmo anche avvalerci di una funzione di controllo per verificare che sia almeno maggiorenne. Un altro caso può essere quello di inserire un determinato valore in un determinato campo, come ad esempio la data attuale per una tabella che costruisce lo storico. Listato 2. Creazione di un trigger per l'assegnazione automatica della data GO Un altro caso ancora può essere quello di un web master, che ad ogni modifica della tabella anagrafica, vuole una notifica sul suo indirizzo di posta elettronica. Listato 3. Creazione di un trigger per invio email EXEC msdb.dbo.sp_send_dbmail Modificare la struttura del databaseAbbiamo detto che in SQL Server 2005 esistono due tipologie di trigger. Una di queste tipologie ci torna utile ogni qual volta si va a modificare la struttura del database. I trigger DDL controllano istruzioni di tipo CREATE, ALTER o DROP, quindi istruzioni per modificare le tabelle del database. Sicuramente questi trigger hanno uno scopo maggiormente amministrativo. Poichè consentono il blocco o il controllo di operazioni normalmente eseguite da amministratori e non dal normale utente. Potremmo aver necessità di modificare alcune tabelle figlie se il dato di una tabella madre viene modificato. Se si vuole creare un versioning (insieme di versioni) del database corrente. Vediamo un semplice trigger che impedisce la modifica o cancellazione della tabella anagrafica, informando l'amministratore. Listato 4. Creazione di un trigger per blocco CREATE TRIGGER non_cancellare Nota: se andiamo a modificare radicalmente la struttura di un oggetto, senza aver prima eseguito un controllo di fattibilità, è probabile che alcuni trigger legati a questi oggetti, non siano più validi. |