Como verificar se um gatilho é inválido?
Pergunta
Eu estou trabalhando em bancos de dados que têm em movimento mesas auto-gerado por algumas ferramentas obscuros. By the way, temos que acompanhar as mudanças de informação na tabela via alguns gatilhos. E, naturalmente, ocorre que algumas alterações na estrutura da tabela quebrou alguns gatilhos, através da remoção de uma coluna ou a alteração do tipo, por exemplo.
Assim, a pergunta é: Existe uma maneira de consultar os metadados Oracle para verificar se alguns gatilhos são quebradas, a fim de enviar um relatório para a equipe de suporte?
Os user_triggers dar todos os gatilhos e diz se eles são ativar ou não, mas não indica se eles ainda são válidos.
Solução
SELECT *
FROM ALL_OBJECTS
WHERE OBJECT_NAME = trigger_name
AND OBJECT_TYPE = 'TRIGGER'
AND STATUS <> 'VALID'
Outras dicas
Tenha um olhar em SYS.OBJ $, especificamente a coluna STATUS.