Database  »  Articoli  »  MySQL 

I tipi di trigger in MySQL

di: Claudio Garau     07 Ottobre 2008

Con la versione 5 di MySQL sono state introdotte nuove funzionalità che hanno potenziato notevolmente questo DBMS rendendolo concorrenziale con alternative commerciali ritenute più avanzate (si pensi per esempio ad Oracle); una delle novità più importanti attiene alla possibilità di creare trigger per la gestione delle procedure.

In pratica un trigger inserito all'interno di un database consente di gestire in modo automatico determinate procedure tramite regole definite, il tutto senza richiedere l'intervento dell'utente che dovrà digitare un numero inferiore di comandi ed istruzioni SQL; in questo modo la base di dati avrà la possibilità di dar vita a particolari comportamenti agendo in risposta al verificarsi di eventi esterni, parliamo quindi di basi di dati "attive".

La presenza di trigger incrementa il livello di astrazione dei dati grazie al quale le regole che danno vita ai comportamenti non sono visibili all'esterno e, nello stesso tempo, i comportamenti non vengono dettati soltanto dal DBMS ma dipendono dallo schema dei dati.

Alla base del funzionamento dei trigger vi sono tre elementi fondamentali (anche se non tutti obbligatori) che devono essere presi in considerazione in sede di definizione delle regole:

  1. Eventi: questi possono essere il risultato di un comando SQL inserito in una query come per esempio un inserimento, un aggiornamento o la cancellazione di uno o più record, anche un ulteriore trigger può generare un evento (cascade triggers); gli eventi sono sempre rivolti verso una tabella che, per questo motivo, prende il nome di "target".
  2. Condizioni: non sempre sono presenti, si tratta infatti di argomenti opzionali che possono influire sull'applicazione o meno di determinate regole; il loro funzionamento è basato sulla logica booleana (TRUE o FALSE) e vengono espresse tramite istruzioni scritte in linguaggio SQL del quale rispettano la sintassi.
  3. Azioni: sono i comportamenti (eventualmente condizionati) che si verificano sulla base degli eventi; possono presentarsi come semplici istruzioni SQL, alcuni database integrano però dei linguaggi specifici per la loro definizione.

Tipologie di trigger e di azioni

L'amministratore di un database ha a disposizione alcune tipologie di trigger che si differenziano sia per le diverse parti dello schema di dati a cui fanno riferimento sia per il loro ambito di utilizzo:

  • Ttrigger a livello di riga (o tupla o record): sono eseguiti una singola volta per ogni record su cui agisce una determinata istruzione (evento); vengono utilizzate spesso in operazioni di sincronizzazione dei dati.
  • Trigger a livello di istruzione: utilizzati raramente per operazioni che influiscono sulla struttura dei dati, essi prevedono un'unica esecuzione per ogni istruzione anche se coinvolgono più record.
  • Trigger con clausole BEFORE ed AFTER: i trigger possono essere definiti sulla base di una linea temporale, dato che essi reagiscono a determinati eventi è quindi possibile stabilire se l'azione conseguente all'istruzione debba verificarsi precedentemente o successivamente rispetto a quest'ultima.
  • Trigger a livello di basi di dati: vengono eseguiti quando sono in corso operazioni che riguardano lo schema dei dati come per esempio in conseguenza di istruzioni per la creazione, l'alterazione, la rinomina e la rimozione di una tabella o la revoca di privilegi sulla tabella stessa. Forniscono uno strato di protezione per l'integrità delle basi di dati.

Vi sono poi alcune particolari tipologie di trigger come per esempio quelli denominati INSTEAD OF che vengono utilizzati con una certa frequenza per la gestione dei dati in database come Oracle: in pratica la clausola INSTEAD OF indica quali operazioni debbano essere eseguite in sostituzione di quelle che hanno reso necessaria la chiamata del trigger.

Per quanto riguarda le tipologie di azione di un trigger, queste possono essere distinte in due gruppi fondamentali:

  • Azioni eseguite in un'unica occorrenza in seguito all'invocazione del trigger (come nel caso dei trigger a livello di istruzione), in esse le variabili disponibili hanno il valore della tabella di transazione che conserva lo stato precedente e successivo alle modifiche della tabella target.;
  • Azioni eseguite per ogni singolo record interessato dall'istruzione (come nel caso dei trigger a livello di riga), in esse le variabili associano ad ogni azione il valore del relativo record memorizzato nella tabella di transizione.

Guide Database

Guida Access

Iniziare a sviluppare database grazie alla potenza visuale offerta...

Guida SQL Server 2005

L'RDBMS di Microsoft è uno dei più utilizzati, soprattutto in ambito...

Guida Oracle

Scoprire ed approfondire un dei più importanti RDBMS sulla scena...

Altre guide

Newsletter

Ogni settimana, in due distinte newsletter: notizie a approfondimenti su MySQL, SQLserver e Oracle.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto