两个表中的外键

时间:2011-12-28 18:17:12

标签: sql oracle plsql

我有两个带有“循环”外键的现有表,即表A引用表B中的PK,反之亦然。

现在,我想在两个表中插入行。行具有引用另一个表中当前添加的值的列,因此会发生错误。

如何填写彼此引用的两个表?使用Oracle PL/SQL

2 个答案:

答案 0 :(得分:6)

删除循环引用。

重新设计两个表及其关系 - 没有循环引用。

答案 1 :(得分:6)

如果您有正确的循环引用原因,您还可以通过重新创建FK并指定DEFERRABLE子句来解决此问题。然后,您可以在创建约束时指定INITIALLY DEFERRED子句,也可以在插入之前发出以下语句:

SET CONSTRAINT <constraint_name> DEFERRED;

如果约束处于延迟状态,则约束检查将一直等到事务结束(提交隐式或显式提交时)。