У нас есть два экземпляра БД Oracle: ORIG и REPL со связью БД между ними.
В ORIG есть таблицы, и у каждой таблицы есть журнал материализованного представления (MVL).MVL используются для обновления материализованных представлений (MV), которые расположены в REPL.
Другие пользователи в REPL имеют право выбирать из MV.Некоторые MV в REPL содержат после триггеров вставки.
В случае, если нам нужно изменить таблицу в ORIG (например, добавить новый столбец), есть процедура, которая делает следующее (чтобы гарантировать, что MV в REPL имеет то же самоеструктура как таблица в ORIG):
- изменить таблицу в ORIG
- изменить MVL в ORIG
- удалить и заново создать MV в REPL (чтобы он имел ту же структуру, что и таблица в ORIG)
- предоставляет привилегии для MV в REPL
Причина последнего действия (предоставление привилегий) заключается в том, что, посколькуMV удаляется и воссоздается, все связанные объекты (разрешения, триггеры, ...) теряются.
Мой вопрос: поскольку некоторые MV содержат триггеры, мне нужно изменить процедуру, чтобы она такжесоздает эти триггеры.Коды триггеров различаются (таблица за таблицей).Я знаю, что могу жестко закодировать что-то вроде
if table_name = 'tableA' then
create triggerA
...
, но я верю, что есть лучшее решение.
Любые советы?