2

我以前SET CONSTRAINTS ALL DEFERRED在我的 Oracle 事务中执行过,但是一旦我调用insertRow从配置为andResultSet获得的,我仍然得到一个( : 违反完整性约束)。PreparedStatementTYPE_SCROLL_INSENSITIVECONCUR_UPDATABLEjava.sql.SQLIntegrityConstraintViolationExceptionORA-02291

这是一个带有“自我”外键约束的表(它表示一个图;特别是一棵树),因此当我稍后插入后面的行时,实际上应该满足该约束。

为什么SET CONSTRAINTS ALL DEFERRED显然被忽略了,我能做些什么呢?

4

1 回答 1

3

问题是您的约束不是DEFERRABLE. 您可以使用以下方法检查它:

SELECT constraint_name, table_name, DEFERRABLE 
FROM all_constraints 
WHERE owner = 'myschema' 
  AND table_name = 'THE_TABLE';

如果没有创建约束,DEFERRED那么SET CONSTRAINTS ALL DEFERRED将不会产生任何影响。

解决方案:将约束重新创建为DEFERRED

于 2013-10-05T10:48:34.013 回答