我正在使用oracle 12c数据库并想测试一个问题。
执行Web服务请求时,它会在约束名称(YYY.FK_L_TILSYNSOBJEKT_BEGRENSNING)上返回基础ORA-02292错误。 这是具有约束的表的SQL:
CONSTRAINT "FK_L_TILSYNSOBJEKT_BEGRENSNING" FOREIGN KEY ("BEGRENSNING")
REFERENCES "XXX"."BEGRENSNING" ("IDSTRING") DEFERRABLE INITIALLY DEFERRED ENABLE NOVALIDATE
问题是,当我尝试使用 parent 表中的有效IDSTRING(在两个表中)手动删除行时 - 它成功完成了。
是什么导致它以这种方式行事?我还有其他信息吗?
答案 0 :(得分:0)
不确定它是否对某人有帮助,因为这是一个相当愚蠢的错误,但我会尝试让它变得有用,因为人们需要答案。
关键字DEFERRABLE INITIALLY DEFERRED
表示约束是在提交时强制执行而不是在查询运行时,而不是INITIALLY IMMEDIATE
,后者会在您发出查询后立即进行检查,但是关键字使数据库批量更新有点慢(因为事务中的每个查询都必须通过约束来检查,同时在最初的顺序中如果事实证明存在问题 - 整个批量回滚,不会发出额外的不必要的查询,并且可以关于它的完成),因此比起初的顺从使用频率低。
错误ORA-02292仅针对DELETE
语句显示,因为它知道调试语句更容易一些。