Внешний ключ в двух таблицах - PullRequest
1 голос
/ 28 декабря 2011

У меня есть две существующие таблицы с «круглыми» внешними ключами, то есть таблица A ссылается на PK в таблице B и наоборот.

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

Как заполнить две таблицы, ссылающиеся друг на друга? Использование Oracle PL/SQL.

Ответы [ 2 ]

6 голосов
/ 28 декабря 2011

Если у вас есть веская причина для циклической ссылки, вы также можете обойти это, воссоздав свой FK и указав предложение DEFERRABLE. Затем вы можете либо указать условие INITIALLY DEFERRED при создании ограничения, либо выполнить следующую инструкцию перед вставкой:

SET CONSTRAINT <constraint_name> DEFERRED;

Если ограничение находится в отложенном состоянии, проверка ограничения будет ждать до конца транзакции (когда отправлена ​​неявная или явная фиксация).

6 голосов
/ 28 декабря 2011

Удалить круговые ссылки.

Перепроектировать две таблицы и их взаимосвязь - без циклических ссылок.

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