我有两个带有“循环”外键的现有表,即表A
引用表B
中的PK,反之亦然。
现在,我想在两个表中插入行。行具有引用另一个表中当前添加的值的列,因此会发生错误。
如何填写彼此引用的两个表?使用Oracle PL/SQL
。
答案 0 :(得分:6)
删除循环引用。
重新设计两个表及其关系 - 没有循环引用。
答案 1 :(得分:6)
如果您有正确的循环引用原因,您还可以通过重新创建FK并指定DEFERRABLE子句来解决此问题。然后,您可以在创建约束时指定INITIALLY DEFERRED子句,也可以在插入之前发出以下语句:
SET CONSTRAINT <constraint_name> DEFERRED;
如果约束处于延迟状态,则约束检查将一直等到事务结束(提交隐式或显式提交时)。