Как проверить, является ли триггер недействительным?
Вопрос
Я работаю над базами данных, в которых есть движущиеся таблицы, автоматически создаваемые какими-то малоизвестными инструментами.Кстати, нам приходится отслеживать изменения информации в таблице через некие триггеры.И, конечно, бывает, что какие-то изменения в структуре таблицы нарушали какие-то триггеры, например, удаляя столбец или меняя его тип.
Итак, вопрос:Есть ли способ запросить метаданные Oracle, чтобы проверить, не сломаны ли некоторые триггеры, и отправить отчет в службу поддержки?
user_triggers предоставляет все триггеры и сообщает, включены они или нет, но не указывает, действительны ли они по-прежнему.
Решение
SELECT *
FROM ALL_OBJECTS
WHERE OBJECT_NAME = trigger_name
AND OBJECT_TYPE = 'TRIGGER'
AND STATUS <> 'VALID'
Другие советы
Посмотрите на SYS.OBJ$, в частности на столбец STATUS.
Не связан с StackOverflow