Linguaggio SQL: i Trigger

In molti DBMS è disponibile un costrutto, chiamato trigger, che esegue un insieme di righe di codice sulla base di dati al verificarsi di un determinato evento.
In altre parole un trigger è un componente del DBMS per la gestione di regole che scattano su determinati Eventi , in maniera Condizionata, eseguendo una particolare Azione o un insieme di regole.

Per Evento si intende una richiesta di modifica dello stato della base di dati (inserimento, cancellazione o modigica di tuple); quando avviene l’evento, il trigger viene attivato.
Per Condizione si intende un predicato che valuta l’applicazione del trigger.
Per Azione si intende un generico comando di modifica che viene eseguito quando si elabora l’azione il trigger.

Linguaggio SQL: i Trigger

I trigger sono quindi applicazioni memorizzate nel DBMS che le esegue quando accade un determinato evento, in modo da gestire diverse situazioni:

  1. implementare regole di gestione non presenti nei normali costrutti dichiarativi del linguaggio SQL;
  2. segnalare automaticamente ad altri programmi di dover eseguire delle effettuate azioni in base alle modifiche apportate a una tabella;
  3. inserire, al momenti di un’operazione di inserimento o modifica, valori prestabiliti in una o più colonne.
  4. rendere globali alcuni controlli affidandone l’esecuzione al DBMS.

I trigger si dividono in:

  • trigger DML. L’evento di innesco è una primitiva per la manipolazione dei dati (INSERT, UPDATE o DELETE). Possono essere eseguiti subito prima (BEFORE) o subito dopo (AFTER) l’evento di innesco. La condizione è espressa in una clausola WHEN all’interno della dichiarazione e può essere anche omessa e sottintesa se il suo valore è sempre TRUE.
  • trigger DDL (o trigger di sistema). Reagiscono a eventi di sistema, quali l’avvio e la chiusura di un database, la creazione o cancellazione di tabelle, ecc. e sono usati come ulteriore misura di sicurezza in una base dati.

I trigger si “accendono“, quindi, per effetto di uno dei seguenti eventi:
DML statement (INSERT UPDATE o DELETE) su tabelle o viste;
DDL statement (CREATE, ALTER, DROP);
Eventi di sistema sulla base di dati (SERVER ERROR, LOGON, LOGOFF, STARTUP, SHUT DOWN).

Per i trigger DML si fa inoltre distinzione per quanto riguarda il modo di esecuzione e la granularità.

  1. Modo di esecuzione:
    1. after, considerato ed eseguito dopo che venga applicata sulla base dati l’azione che lo ha attivato;
    2. before, considerato ed eseguito prima che venga applicata alla base dati l’azione che lo ha attivato.
  2. Granularità:
    1. di tupla (row – level): attivazione per ogni tupla della tabella coinvolta nell’operazione;
    2. di operazione (statement – level): una sola attivazione per ogni istruzione DML che attiva il trigger, coinvolgendo tutte le ennuple della tabella target.
DataBase

L’insieme di righe di una tabella detta target, che sono cancellate, inserite o modificate da una operazione che attiva un trigger, prende il nome di transition table. In particolare:
– Un delete trigger prevede una sola transition table, detta old transition table.
– Un insert trigger prevede una sola transition table, chiamata new transition table.
– Un update trigger prevede sia una old transition table (le righe da rimpiazzare), sia una new transition table (le righe aventi i nuovi valori), entrambe con la stessa cardinalità.

Visite: 102