In sintesi
In questa lezione vediamo come creare un trigger di database, per ora senza l'uso del Code Editor che è invece il metodo consigliato per la scrittura del Visual Code.
Nota: questo video corso è stato realizzato con la versione 4 di Instant Developer. Anche se i contenuti sono ancora attuali e sono utili per imparare ad utilizzare Instant Developer, alcune affermazioni sono di fatto superate. Per i dettagli e le ultime novità sulle funzionalità illustrate vi rimandiamo alla sezione di reference che viene tenuta aggiornata giornalmente.
Vediamo ora come aggiungere trigger su una tabella. Un trigger è una stored procedure che viene chiamata automaticamente dal database server quando una tabella viene modificata. E' possibile definire quale tipo di modifica causa l'esecuzione del trigger.
Aggiungiamo un trigger alla tabella Order Details. Per fare questo utilizziamo l'apposito comando Add
Trigger del menu contestuale della tabella. Vediamo subito le proprietà dell'oggetto
Trigger. Oltre al nome e alla descrizione possiamo definire per quali tipi di modifiche alla tabella vogliamo che il trigger sia scatenato: inserimento, modifica o cancellazione. Possiamo anche indicare se vogliamo che il trigger venga eseguito per ogni record cambiato oppure solo una volta per tutto lo statement di modifica. Nel caso di trigger di update o for-each possiamo anche indicare una condizione che deve essere soddisfatta per far si che il trigger venga eseguito.
Ora guardiamo quali variabili Instant Developer ha creato all'interno del trigger. C'è un primo folder,
Trigger Operation, che contiene 3 variabili booleane che indicano quale operazione ha causato il trigger. Poi un altro folder Updating Columns che contiene una variabile booleana per ogni campo della tabella, che indica quale campo verrà cambiato a seguito dell'operazione che ha causato il trigger. Volendo eseguire il trigger solo in conseguenza della modifica di alcuni campi, è sufficiente cancellare da questo folder i campi non voluti.
Poi abbiamo due record: Old Row e New Row che contengono rispettivamente il vecchio valore del record prima della modifica che ha causato il trigger, ed il valore che il record assumerà dopo l'esecuzione del trigger.
Supponiamo di voler creare un movimento di magazzino ogni volta che una nuova riga d'ordine viene inserita. Per fare questo, utilizziamo il trigger che abbiamo appena inserito, indicando che deve essere eseguito a seguito di un'operazione di inserimento. Abbiamo selezionato anche il flag di For Each perché vogliamo eseguire un trigger per ogni record inserito.
Ora vogliamo inserire un record nella tabella Stock Movements. Aggiungiamo uno statement di Insert Values tirando la tabella sulla procedura con il tasto SHIFT.
Poi valorizziamo tutti i dati necessari: Time Stamp, Order Detail ID, Order Detail Product ID, Quantity infine il tipo.
I trigger non sono disponibili per database Access o se si utilizza il driver ODBC.