Il trigger é un elemento dello schema che corrisponde ad una reazione attiva ad una azione sul database
Le Dasi di dati che comprendono i trigger sono dette ATTIVE
Evento-Condizione-Azione
Gli eventi possono essere scatenati da statement di aggiornamento della base dati (UPDATE, INSERT, DELETE)
Le condizioni sono delle "riduzioni" agli eventi
Le azioni sono statement SQL oppure statement tipici della BD
Un trigger risponde ad eventi su una sola tabella
SINTASSI ORACLE
CREATE TRIGGER
TriggerName
BEFORE/AFTER
INSERT/UPDATE/DELETE
ON [CampoCambiato
OF] TabellaCambiata
[FOR EACH ROW]
[WHEN (Condizione)]
BEGIN
[NEW] [OLD]…
END
NEW è una parola chiave: corrisponde alla nuova tupla, OLD alla vecchia
Nell'esempio Viene modificato il valore di Campo1 all'occorrenza del TRIGGER: … BEGIN NEW.Campo1 = Valore
END
Granularità
FOR EACH ROW = Granularità di tupla
(default ovvero per statement) = Granularità di statement SQL (1 evento per ogni statement sql anche se aggiorna più record)
Velocità di valutazione del trigger
Immediata: BEFORE o AFTER
Il TRIGGER viene eseguito nella stessa transazione della modifica che l'ha scatenato
Differita (non trovo corrispondenze in Oracle): valutata dopo la chiusura della transazione che lo solleva
Detached (non trovo corrispondenze in Oracle): gestione in una transazione separata
Inoltre c'é la possibilità che il trigger non venga chiamato immediatamente, ma in un momento spearato rispetto alla valutazione della condizione che lo solleva
Un TRIGGER potrebbe avere una doppia attivazione: es. "AFTER INSERT, UPDATE)
Quando usare un TRIGGER:
- Specificare vincoli di integrità complessi
- Gestione di dati derivati
- Mantenimento di consistenza delle viste materializzate
Qui c'é la guida ufficiale alla CREATE TRIGGER di ORACLE!
Qui Wikipedia Italia tratta il PL/SQL (linguaggio per scrivere le azioni dei trigger)
Nessun commento:
Posta un commento