我在执行执行多次插入的存储过程时遇到问题
我是通过DBLINK将30个表从服务器实例复制到另一个服务器:
INSERT INTO table@dblink (column1)
SELECT column1
FROM table;
但是它导致:
ORA-02291:违反了完整性约束(string.string)-未找到父键
在过程结束时只有一次提交。
我要插入的第四个表的第一个表具有FK,并且不能识别第一个表的插入(我尝试了递延约束和相同的问题:ORA-02291)。
答案 0 :(得分:0)
这里的问题是您正在通过db-link修改数据(DML)。这可能由Oracle管理不当,并导致意外行为。您应该采用另一种方法:不要推送数据,而是通过此db-link拖动数据,然后在本地进行插入。当然,您可能无法从技术上在目标数据库上做您想做的事情...
解决方案是在插入之前先停用FK,然后再激活FK。
但是,我不确定直接通过db-link可以实现此DDL ...您可能需要创建一个过程来停用目标数据库上的FK,然后通过db-link对其进行调用。