venerdì, settembre 19, 2008

Basi di dati: SQL: Trigger

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: