我以前我的Oracle事务内执行SET CONSTRAINTS ALL DEFERRED
,但只要我打电话insertRow
从配置为TYPE_SCROLL_INSENSITIVE
和CONCUR_UPDATABLE
一个PreparedStatement
获得ResultSet
,我仍然获得了java.sql.SQLIntegrityConstraintViolationException
(ORA-02291
:违反完整性约束)。甲骨文JDBC忽略SET约束的递延在CONCUR_UPDATABLE ResultSet中
这是一个带有“自我”外键约束的表(它表示一个图,特别是一棵树),所以当我稍后插入一行后面时,实际上应该满足该约束。
为什么SET CONSTRAINTS ALL DEFERRED
显然被忽略了,我能做些什么呢?
@MaVRoSCy这没有任何意义。你的意思是插入的行的FK。但是,这是SET CONSTRAINTS ALL DEFERRED语句应该禁用的检查。 –
是您创建为'DEFERRABLE'的约束吗?你可以使用这个sql来检查它'SELECT constraint_name,table_name,DEFERRABLE FROM all_constraints WHERE owner ='myschema' AND table_name ='THE_TABLE';' – MaVRoSCy
如果不是,那么SET CONSTRAINTS ALL DEFERRED将不会有任何效果 – MaVRoSCy