Programmazione trigger in MySQL
Trigger o comunemente chiamati in programmazione "trigger" Sono un tipo di oggetto trovato nei database. Quando un determinato evento o operazione viene eseguito in tale database, il nostro trigger esegue automaticamente un'azione per la quale l'abbiamo programmato in precedenza.
Il trigger si attivano automaticamente quando vengono eseguite le operazioni di INSERT, DELETE o UPDATE che sono rispettivamente di inserimento, cancellazione o aggiornamento. Quando si esegue una di queste azioni, i nostri trigger eseguono un'istruzione o un blocco di istruzioni per cui sono stati programmati in precedenza.
Il struttura di un trigger in MySQL è il prossimo:
INGRANDIRE
[DEFINER = {utente | CURRENT_USER}]Questa parte del codice dice al gestore del database quale utente ha i privilegi per poter chiamare i nostri trigger quando si verificheranno eventi DML. Il valore predefinito è CURRENT_USER.
Per scegliere il nome del nostro trigger c'è un ottimo criterio da seguire che è: mettere prima il nome della tabella, poi l'iniziale dell'operazione DML, (I per Insert, D per Delete o U per Update) e poi il iniziale dal momento dell'esecuzione (o A per il dopo o B per il prima).
PRIMA | DOPO DIIndica solo il momento in cui verrà eseguito il nostro trigger, ovvero se il trigger viene attivato prima dell'evento DML (prima) o dopo (dopo).
INSERIRE | ELIMINA | AGGIORNARECi dice quale sarà la frase che useremo per attivare il nostro trigger, Inserisci per inserire i dati, Elimina per eliminarli o Aggiorna per modificarli.
ON nome tabellaIndica la tabella associata al nostro trigger.
PER OGNI RIGACi dice solo che il trigger verrà eseguito per ogni riga della nostra tabella precedentemente definita in ON.
Il dichiarazione sql finale oppure il blocco di istruzioni sarà la frase o le frasi che il nostro trigger eseguirà quando entrerà in azione.
Esempio pratico di trigger
Ora vedremo un esempio pratico di come programmare un trigger per vendere i biglietti dell'autobus per un determinato percorso mentre ci sono posti liberi.
Possiamo utilizzare qualsiasi software che accetti trigger e stored process.
1° Creiamo un database:
2° di fila creiamo due tabelle nel nostro database. Uno di questi è dove conserveremo i biglietti venduti e l'altro viene creato in modo che possiamo sapere quanti biglietti sono disponibili per un determinato viaggio.
Ecco la tabella che conterrà le informazioni relative al numero di biglietti venduti:
Successivamente, creiamo la tabella in cui salviamo le informazioni sul numero di biglietti disponibili per ogni viaggio specifico:
3° ora creiamo la tabella per memorizzare i diversi viaggi:
4° Dopo aver creato il database e le tabelle andremo a creare la query SQL del trigger, ma prima di questo dobbiamo sapere quali sono le NUOVI e VECCHI identificatori nei trigger.
Affinché il nostro trigger sia correlato a una o più colonne specifiche della tabella, dobbiamo utilizzare gli identificatori sopra menzionati NUOVI E VECCHI.
VECCHIO: indica il vecchio valore della colonna
NUOVO: il nuovo valore che potrebbe assumere.
Come esempio: VECCHIO.idtrip o NUOVO.idtrip.
Con il INSERISCI dichiarazione Possiamo utilizzare solo il NUOVO identificatore perché con INSERT la funzione che viene generata è quella di introdurre nuovi valori alla colonna o alle colonne.
Se usiamo il Dichiarazione DELETE in questo caso dobbiamo utilizzare l'identificatore OLD perché con DELETE stiamo cancellando valori che esistevano già in precedenza.
D'altra parte, se usiamo il AGGIORNAMENTO dichiarazione Possiamo usare OLD e NEW, poiché possiamo fare riferimento a valori vecchi o nuovi poiché modificheremo record già esistenti per altri valori.
Ora che comprendiamo gli identificatori, l'istruzione sql sarà simile a questa:
Se eseguiamo l'istruzione sql in un programma che lo supporta, lo vedremmo davvero il trigger è stato creato.
Per vedere come funziona, introduciamo alcuni valori logici per un viaggio in autobus, ad esempio:
Qui ho inserito nel viaggio con identificativo numero 1 che ci sono 45 posti disponibili.
Successivamente vendiamo un biglietto, ad esempio il biglietto che corrisponde al posto 14:
Quando si effettua questa query, se andiamo al campo current_availability, vedremo che 45 è cambiato in 44, poiché è stato attivato il trigger 'update_availability'.
Il vantaggi dell'utilizzo dei trigger è che possono essere programmati diversi casi d'uso e che viene mantenuta l'integrità del database, ovvero ci dà la possibilità di creare routine che eseguono determinate azioni automaticamente senza la necessità di farlo manualmente. Sarebbe molto valido per la convalida di qualsiasi tipo di informazione o per fare un po' di follow-up dei movimenti del database.
Un altro esempio molto interessante come ho appena accennato nelle convalide è determinare la maggiore età prima di emettere una frase, ad esempio:
Dopo aver visto gli esempi di creazione di trigger, dobbiamo sapere come accedere alle informazioni del trigger. Per questo useremo le frasi:
Per vedere i trigger nel nostro database:
MOSTRA TRIGGERSe invece vogliamo vedere le informazioni del trigger che è stato creato al momento:
MOSTRA CREATE TRIGGER student_BU_triggerInfine, dopo aver visto come vengono creati e visualizzati i trigger, vedremo qual è l'istruzione utilizzata per eliminare un trigger che abbiamo nel nostro database.
Per farlo non ci resta che utilizzare il tipico comando delete: far cadere.
DROP TRIGGER [IF_EXISTS] trigger_nameTi è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo