Informazioni sui trigger

Un trigger è un'unità PL/SQL che viene memorizzata nel database e (se nello stato abilitato) ed eseguita ("avviata") automaticamente in risposta a un evento specificato.

Un trigger ha la struttura seguente:

TRIGGER trigger_name
  triggering_event
  [ trigger_restriction ]
BEGIN
  triggered_action;
END;

Il nome_trigger deve essere univoco per i trigger nello schema. Un trigger può avere lo stesso nome di un altro tipo di oggetto nello schema (ad esempio, una tabella); tuttavia, Oracle consiglia di utilizzare una convenzione di denominazione che consenta di evitare la confusione.

Se il trigger è nello stato abilitato, triggering_event fa In modo che il database esegua attivato_action se trigger_restriction è TRUE o omessa. Triggering_event è associato a una tabella, a una vista, a uno schema o al database e rappresenta una delle voci elencate di seguito.

Se il trigger è nello stato disabilitato, triggering_event non fa in modo tale che il database esegua attivato_action, anche se trigger_restriction è TRUE o viene omessa.

Per impostazione predefinita, un trigger viene creato nello stato abilitato. È possibile disabilitare un trigger abilitato e viceversa.

A differenza di un sottoprogramma, un trigger non può essere richiamato direttamente. Un trigger viene richiamato solo dal relativo evento di attivazione, che può essere causato da qualsiasi utente o applicazione. Si potrebbe non sapere che un trigger è in esecuzione fino a quando non causa un errore non gestito correttamente.

Un trigger semplice può essere attivato esattamente in uno di questi punti temporali :

Un trigger composto può essere avviato in più punti temporali. Per informazioni sui trigger composti, vedere Oracle Database PL/SQL Language Reference.

In una vista è definito un trigger INSTEAD OF e il relativo evento di attivazione è un'istruzione DML. Invece di eseguire l'istruzione DML, Oracle Database esegue il trigger INSTEAD OF. Per ulteriori informazioni, vedere "Creazione di un trigger INSTEAD OF".

Un trigger del sistema viene definito su uno schema o sul database. Un trigger definito su uno schema viene avviato per ogni evento associato al proprietario dello schema (l'utente corrente). Un trigger definito su un database viene avviato per ogni evento associato a tutti gli utenti.

Uno degli utilizzi dei trigger è applicare regole business che siano valide per tutte le applicazioni client. Ad esempio, si supponga che le informazioni aggiunte alla tabella EMPLOYEES debbano avere un determinato formato e che molte applicazioni client possano aggiungere dati a questa tabella. Un trigger sulla tabella può garantire il formato appropriato di tutti i dati aggiunti alla tabella. Poiché il trigger viene eseguito ogni volta in cui un client aggiunge i dati alla tabella, nessun client può aggirare le regole e il codice che applica le regole può essere memorizzato e gestito solo nel trigger, piuttosto che in ogni applicazione client. Per altri utilizzi dei trigger, vedere Oracle Database PL/SQL Language Reference.

Per informazioni complete sui trigger, vedere anche: Oracle Database PL/SQL Language Reference