Я подумал об Oracle Streams и наткнулся на вопрос.
Oracle Streams используется в базе данных, для которой я программирую, но я не администратор базы данных. Поэтому я не знаком с конфигурацией базы данных. У меня просто «простое» представление о том, что на самом деле делают Streams.
На мой взгляд, он сохраняет согласованность данных между несколькими распределенными базами данных. Теперь мой вопрос:
Предположим, у нас есть базы данных A и B, соответствующие Oracle Streams. Оба они построены на основе одних и тех же схем, таблиц и триггеров. Если есть вставка в таблицу T1 в базе данных A, данные передаются в таблицу T1 в базе данных B через потоки.
Но что, если есть триггер вставки TR1 для таблицы T1. Он наверняка выполняется в базе данных A при вставке в T1, но что происходит в базе данных B, если потоки распространяют данные из формы A в B? Триггер выполнен? Думаю, нет, потому что в этом может быть много неприятностей.
Предотвращает ли Streams выполнение кода во время распространения данных через себя?
Что происходит, зависит от того, сработал ли триггер. поджечь один раз.
Если триггер настроен на однократное срабатывание, то изменения применяются к базе данных A, и Streams точно копирует их в базу данных B. Это похоже на то, что вы хотите.
В противном случае триггер снова срабатывает в базе данных B после того, как Streams реплицирует изменение, которое привело к срабатыванию триггера в базе данных A.
Какой метод подходит для каждого конкретного случая, зависит от того, что делает триггер.
Видеть Документация Oracle для более полного объяснения и другого примера.