1

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

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

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

但这会导致:

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

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

我要插入的第四个表对第一个表有一个 FK,并且它无法识别第一个表的插入(我尝试过使用延迟约束和同样的问题:ORA-02291)。

4

1 回答 1

0

这里的问题是您正在通过 db-link 修改数据 (DML)。这可能由 Oracle 管理不善,并导致意外行为。你应该反过来做:而不是推送数据,通过这个 db-link 拖动数据,并在本地进行插入。当然,从技术上讲,您可能无法在目标数据库上执行您想要的操作...

您拥有的解决方案是在插入之前停用 FK,然后激活 FK。

但是,我不确定此 DDL 是否可以直接通过 db-link... 您可能需要创建一个过程来停用目标数据库上的 FK,并通过 db-link 调用它。

于 2018-08-27T14:17:42.290 回答