ORA-04091 Ошибка: держите две таблицы в синхронизированном состоянии c, используя триггеры - PullRequest
0 голосов
/ 04 февраля 2020

Мне нужно хранить две таблицы в sy c, поэтому, когда строка, вставленная в таблицу A, и одна из колонок имеют определенные условия, запись должна быть добавлена ​​в таблицу B. Также, когда строка вставлена ​​в таблицу B, запись должна быть добавлена. в таблице А. Как это можно сделать sh с помощью триггеров. У меня были триггеры для обеих таблиц после вставки, но выдает ошибку ORA-04091.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Используйте составные триггеры с проверкой, выходит ли запись для указанного условия c, а затем не go далее в триггере, чтобы избежать циклической зависимости.

0 голосов
/ 04 февраля 2020

Таблица мутирует , что означает, что вы выбираете ее одновременно с воздействием вставки (или обновления). Начиная с 11g, составной триггер является выходом из него. В более ранних Oracle версиях (10g и ниже) пакет использовался для решения этой проблемы.

Однако, изменяющаяся таблица часто поднимает вопрос: правильно ли вы это делаете? Возможно, используемый вами код можно переписать так, чтобы избежать ошибки.

Наконец, если эти две таблицы содержат одинаковые данные, почему у вас две таблицы вместо одной?

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