Come verificare se un trigger non è valido?
Domanda
Sto lavorando su database con tabelle mobili generate automaticamente da alcuni strumenti oscuri. A proposito, dobbiamo tenere traccia delle modifiche alle informazioni nella tabella tramite alcuni trigger. E, naturalmente, si verifica che alcuni cambiamenti nella struttura della tabella abbiano rotto alcuni trigger, rimuovendo una colonna o cambiando il suo tipo, ad esempio.
Quindi, la domanda è: esiste un modo per eseguire una query sui metadati Oracle per verificare se alcuni trigger sono interrotti, al fine di inviare un rapporto al team di supporto?
I trigger_utente forniscono tutti i trigger e indicano se sono abilitati o meno, ma non indicano se sono ancora validi.
Soluzione
SELECT *
FROM ALL_OBJECTS
WHERE OBJECT_NAME = trigger_name
AND OBJECT_TYPE = 'TRIGGER'
AND STATUS <> 'VALID'
Altri suggerimenti
Dai un'occhiata a SYS.OBJ $, in particolare alla colonna STATUS.