- SQL
- PL/SQL
- PL/SQL Avanzato
- DBA
- Forms
- Tips and Tricks
 
 
 

 
 
> Stoppare un'istruzione DML
 
 

Stoppare un'istruzione DML

di Giulia Basiricò

Ebbene sì! Tra le tante potenzialità dei trigger c'è anche questa : STOPPARE ISTRUZIONI DML!

Supponete di avere una tabella TAB_DA_NON_AGGIORNARE (sulla quale volete che nessuno metta mano)...

Gestite un trigger

BEFORE UPDATE OR INSERT OR UPDATE ON TAB_DA_NON_AGGIORNARE
e sollevate un'eccezione (con il RAISE) ma non gestitela!

Voglio dire...

CREATE OR REPLACE TRIGGER TRIGGER_STOP

      BEFORE UPDATE OR INSERT OR UPDATE ON TAB_DA_NON_AGGIORNARE

BEGIN

     RAISE_APPLICATION_ERROR(-20001,'Attenzione: la tabella TAB_DA_NON_AGGIORNARE è non può essere modificata');

END TRIGGER_STOP;

In questo modo chiunque provi ad aggiornare la tabella (quindi ad inserire, cancellare o modificare dati) si beccherà un bell'errore:

The following error has occurred:

ORA-20001: Attenzione : la tabella TAB_DA_NON_AGGIORNARE non può essere modificata.
ORA-06512: at "TUO_USER.TRIGGER_STOP", line 3
ORA-04088: error during execution of trigger 'TUO_USER.TRIGGER_STOP'

Ed il gioco è fatto!