Trigger

è una procedura che viene eseguita in maniera automatica in coincidenza di un determinato evento, come ad esempio la cancellazione di un record di una tabella. In questo modo si ha a disposizione una tecnica per specificare e mantenere vincoli di integrità anche complessi. I trigger permettono agli utenti di specificare vincoli di integrità più complessi dato che un trigger è essenzialmente una procedura. Tale procedura è quindi associata ad una tabella e viene automaticamente richiamata dal motore del database quando una certa modifica (o evento) avviene all'interno della tabella. Le modifiche sulla tabella possono includere operazioni insert, update, e delete.

Modello ECA di un trigger

L'evento (Event) può essere:

  • un'operazione di aggiornamento del database
  • un evento sistematico
  • un evento esterno

La condizione (Condition), definisce la condizione da verificarsi prima di procedere all'esecuzione della regola. La condizione è facoltativa:

  • se non viene specificata, la regola viene eseguita ogni volta che si verifica l'evento.
  • se è specificata, la regola viene eseguita solo se la condizione risulta verificata.

L'azione (Action), di solito è una sequenza di comandi SQL e/o di codice scritto con linguaggi di programmazione proprietari.

Regole relazionali

Le regole relazionali possono avere due modalità:

  • immediata: la valutazione avviene immediatamente all'attivazione del trigger. Si può distinguere a sua volta:
    • opzione before: prima che l'operazione che lo ha generato abbia effetto;
    • opzione after: dopo che l'operazione che lo ha generato ha eseguito le operazioni sulla base di dati.
  • differita : la valutazione avviene alla fine della transazione, a seguito del comando COMMIT.

    In generale ragionare con i trigger è complesso, in quanto si possono anche avere attivazioni in cascata. „ Quando si ha attivazione in cascata è possibile avere anche cicli infiniti.

e due livelli di granularità:

  • row-level: l'attivazione avviene per ogni tupla coinvolta nell'evento;
  • statement-level: l'attivazione avviene per ogni primitiva SQL.

NOTA: se nessuna tupla è coinvolta nel comando SQL, i triggerrow-levelnon verranno eseguiti, mentre quellistatement-levelsì.

results matching ""

    No results matching ""