Как вы можете синхронизировать 2 таблицы в оракуле через триггер вставки, не проходя бесконечный цикл? - PullRequest
0 голосов
/ 08 июля 2011

У вас есть две оракулярные таблицы A и B. Когда вы вставляете запись в таблицу A, эта запись также будет вставлена ​​в таблицу B.Когда вы вставляете запись в таблицу B, эта запись также будет вставлена ​​в таблицу A.Теперь, как вы собираетесь выполнить это с помощью триггера, не проходя бесконечный цикл?Есть ли способ сделать это с помощью триггера?

Ответы [ 2 ]

4 голосов
/ 08 июля 2011

Почему вы используете триггер?Если вам нужно синхронизировать две таблицы, почему бы вам не создать представление с именем B, которое запрашивает A?Если вам нужна отдельная копия данных, поскольку A и B находятся в разных базах данных, было бы лучше использовать материализованные представления или даже Streams для репликации данных с одного сервера на другой.

2 голосов
/ 08 июля 2011

Я поддерживаю комментарий Джастина о том, что это, вероятно, неправильный способ достижения цели.Может оказаться, что лучше всего иметь одну таблицу «C» с двумя представлениями «A» и «B» с триггерами INSTEAD OF, которые поддерживают базовую таблицу «C».

Вы можете использовать DBMS_UTILITY.FORMAT_CALL_STACK, чтобы определить, что«выше» в цепочке вызовов.Вы также можете использовать переменные уровня пакета или настройки SYS_CONTEXT, чтобы указать, в каком состоянии находится ваш код. Ни один из них не очень хорош.

...