不强制实施 Oracle FK 约束



我正在使用oracle 12c数据库,想测试一个问题。

执行 Web 服务请求时,它会在约束名称 (YYY.FK_L_TILSYNSOBJEKT_BEGRENSNING(。 下面是带有约束的表的 SQL:

CONSTRAINT "FK_L_TILSYNSOBJEKT_BEGRENSNING" FOREIGN KEY ("BEGRENSNING")
REFERENCES "XXX"."BEGRENSNING" ("IDSTRING") DEFERRABLE INITIALLY DEFERRED ENABLE NOVALIDATE

问题是,当我尝试从表中手动删除具有有效 IDSTRING 的行(在两个表中(时 - 它成功地做到了。

是什么原因导致它以这种方式行事?还有其他信息我应该提供吗?

不确定它是否对某人有帮助,因为这是一个相当愚蠢的错误,但我会尽量让它有用,因为人们需要答案。

关键字DEFERRABLE INITIALLY DEFERRED意味着约束是在提交时而不是在查询运行时强制执行的,而不是在INITIALLY IMMEDIATE,后者在您发出查询后立即进行检查,但是此关键字使数据库批量更新速度稍慢(因为事务中的每个查询都必须通过约束进行检查,同时在最初的尊重中,如果事实证明存在问题 - 整个批量回滚, 不会发出其他不必要的查询,并且可以对其进行某些操作(,因此使用频率低于初始顺从。

但是,错误 ORA-02292 仅针对DELETE语句显示,因为知道调试语句会更容易一些。

最新更新