|
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!
|