我以前我的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