¿Cómo comprobar si un disparador no es válido?
Pregunta
Estoy trabajando en bases de datos que tienen tablas móviles generadas automáticamente por algunas herramientas oscuras.Por cierto, tenemos que realizar un seguimiento de los cambios de información en la tabla mediante algunos activadores.Y, por supuesto, ocurre que algunos cambios en la estructura de la tabla rompieron algunos desencadenantes, al eliminar una columna o cambiar su tipo, por ejemplo.
Entonces, la pregunta es:¿Hay alguna manera de consultar los metadatos de Oracle para verificar si algunos activadores no funcionan y poder enviar un informe al equipo de soporte?
Los user_triggers brindan todos los activadores e indican si están habilitados o no, pero no indican si aún son válidos.
Solución
SELECT *
FROM ALL_OBJECTS
WHERE OBJECT_NAME = trigger_name
AND OBJECT_TYPE = 'TRIGGER'
AND STATUS <> 'VALID'
Otros consejos
Eche un vistazo a SYS.OBJ$, específicamente a la columna ESTADO.