Я оглядываюсь назад на разработку Oracle (11g) через несколько лет для проекта моей команды и нуждаюсь в помощи. Мы пытаемся внедрить POC, где любой столбец добавления/удаления будет падать и воссоздать агрессивный вид. Вид относится к таблице сопоставления для создания имен псевдонимов и выбора столбцов.View Creation с использованием запуска DDL
Мои решения:
--1. DDL триггер, который сканирует Добавить столбец, Бросьте столбец -> Идентифицирует имена столбцов -> Обновление Field_Map таблица -> Драже View -> Создает View с именами псевдонимов Field_Map таблицами
Вызов: Получена рекурсивной ошибкой запуска из-View создания внутри DDL
- 2. DDL Trigger сканирует для добавления столбца, столбца удаления столбцов -> -> Обновления Таблица полей полей -> Записывает идентифицированные имена столбцов, таблицы в таблицу Audit_DDL -> триггер DML в таблице аудита Audit_DDL -> отключает триггер DDL (чтобы избежать рекурсии) -> просмотр капель -> Создает вид с именами псевдонима таблицы Field_Map
Задача: Получена рекурсивная ошибка запуска. Я думаю, он все еще рассматривает весь поток как одну транзакцию. Разделение создания представления под триггером DML не помогло.
так, я имею в виду альтернатив:
--3. Store Trigger, Таблицы в Схеме1 и View Schema2. Я ожидаю, это может избежать рекурсии, так как теперь представление create теперь происходит на схеме2, а триггер построен на схеме1.
--4. Создайте хранимую процедуру, которая сканирует записи Audit_DDL (из # 2) для обновленных таблиц, столбцов. Создает представления и метки, проверенные на обработанные записи Audit_DDL. Почасовая работа теперь выполняет эту процедуру.
Любые предложения? Заранее спасибо за то, что помогли мне!
Когда вы говорите: «Просмотр относится к таблице сопоставления для создания имен псевдонимов и выбора столбцов», вы имеете в виду, что представление было ** создано **, ссылаясь на эту таблицу сопоставления? Представление фактически не ссылается на таблицу сопоставления, не так ли? – Gerrat
Это верно, Джеррат.Вид создается с помощью команды execute немедленно, которая будет ссылаться на таблицу field_map только для обеспечения правильных псевдонимов. – user2989971