Как проверить, является ли триггер недопустимым?

Я работаю над базами данных, которые имеют движущиеся таблицы, автоматически генерируемые некоторыми неясными инструментами. Кстати, мы должны отслеживать изменения информации в таблице с помощью триггеров. И, конечно же, происходит так, что некоторые изменения в структуре таблицы сломали некоторые триггеры, удалив столбец или изменив его тип, например.

Итак, вопрос: есть ли способ запросить метаданные Oracle, чтобы проверить, что некоторые триггеры сломаны, чтобы отправить отчет в службу поддержки?

user_triggers дают все триггеры и сообщает, включены они или нет, но не указывает, являются ли они все еще действительными.

2 ответов


SELECT *
FROM   ALL_OBJECTS
WHERE  OBJECT_NAME = trigger_name
AND    OBJECT_TYPE = 'TRIGGER'
AND    STATUS <> 'VALID'

посмотрите на SYS.OBJ$, в частности столбец состояния.