2012-10-04 33 views
0

Oracle 11.2.0.2 - 导入数据从10.2.0.3实例中抽取模式,其中几个约束设置为ON DELETE SET NULL,因此存在一些孤行(按设计)。在数据导入期间,我收到了有关父键未找到的错误,所以我使用novalidate在新环境中重新创建了约束(因为我希望现有的孤儿留在孤儿中,但需要首次创建引用有效父行的新行)。Oracle约束ON DELETE SET NULL无法验证

但是,现在我无法弄清楚如何使这些索引'有效',因为oracle抱怨在我尝试启用时找不到父键。

如何在维持现有孤儿的同时将这些约束设置为有效?

回答

1

如果父键不存在,则不能将参照约束设置为“有效”。如果你使用ON DELETE SET NULL,我希望子表无论如何都要有父键的NULL。在你的情况下,我会寻找行有空 - 这些都是绊倒约束。

+0

对不起,我不完全明白 - 我不应该期望混合使用匹配父项的子行和使用NULL的其他行吗?如果约束不处于有效状态,约束是否仍然有效? – engil

+0

当您尝试将约束设置为“已验证”时,Oracle将对其进行验证。如果有任何子行没有匹配的父母,则会引发异常。如果您不希望为现有行验证约束,请使用'ENABLE NOVALIDATE'。 http://psoug.org/definition/VALIDATE.htm –