Как заново создать триггер на MV - PullRequest
0 голосов
/ 06 сентября 2018

У нас есть два экземпляра БД 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
...

, но я верю, что есть лучшее решение.

Любые советы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...