ORA-02291:插入多行时找不到父键

时间:2018-08-27 13:15:46

标签: oracle plsql sql-insert dblink ora-02291

我在执行执行多次插入的存储过程时遇到问题

我是通过DBLINK将30个表从服务器实例复制到另一个服务器:

INSERT INTO table@dblink (column1)
         SELECT column1
         FROM table;

但是它导致:

  

ORA-02291:违反了完整性约束(string.string)-未找到父键

在过程结束时只有一次提交。

我要插入的第四个表的第一个表具有FK,并且不能识别第一个表的插入(我尝试了递延约束和相同的问题:ORA-02291)。

1 个答案:

答案 0 :(得分:0)

这里的问题是您正在通过db-link修改数据(DML)。这可能由Oracle管理不当,并导致意外行为。您应该采用另一种方法:不要推送数据,而是通过此db-link拖动数据,然后在本地进行插入。当然,您可能无法从技术上在目标数据库上做您想做的事情...

解决方案是在插入之前先停用FK,然后再激活FK。

但是,我不确定直接通过db-link可以实现此DDL ...您可能需要创建一个过程来停用目标数据库上的FK,然后通过db-link对其进行调用。