首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >违反oracle完整性约束-找到子记录

问违反oracle完整性约束-找到子记录
EN

Stack Overflow用户
提问于 2012-06-15 23:58:56
回答 2查看 29.1K关注 0票数 6

我有一个很大的pl/sql存储过程,我们在其中做一些和插入一样长的删除操作。过程以以下语句开始

代码语言:javascript
复制
 EXECUTE IMMEDIATE 'SET CONSTRAINTS ALL DEFERRED'

在我收到的最后一条commit语句ORA-02292中:完整性约束AAA被违反。问题是我不知道到底是哪条语句引起的,因为我既有从父表中删除(在子表之前),也有在父表之前插入到子表中。我试着用谷歌搜索它,但到处都有人说,当我只删除它时,02292就会发生。

当我试图在子表中插入值,但父表中没有此条目时,会出现此错误吗?

另外,02292和02291之间的区别是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-16 02:41:31

ORA-02292表示出现错误的原因是: A)约束条件没有指定ON DELETE子句,B)您从主表中删除了子表中具有匹配引用的行。您的选择是修改约束,以便具有ON DELETE级联,或者确保在从主记录中删除之前删除所有子记录。我更喜欢添加DELETE CASCADE,但我想可能有不这样做的原因。参见ORA-02292。

ORA-02291与此正好相反。如果您尝试在子表中插入行,但在约束条件中指定的新子行上的关键字字段值在主表中不存在,则将引发ORA-02291。参见ORA-02291。

票数 13
EN

Stack Overflow用户

发布于 2017-01-27 19:00:38

如果要禁用名称中的约束以求解ORA-02292。

  1. 查找绑定到该约束的表名

SELECT owner, table_name FROM dba_constraints WHERE constraint_name = '{CONSTRAINT_NAME}';

  • Disable约束(此命令应由管理员用户执行)

ALTER TABLE {TABLE_NAME} DISABLE constraint {CONSTRAINT_NAME} cascade;

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11054272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档