当前位置: 首页 > 知识库问答 >
问题:

SQL删除返回“ORA-02292:完整性约束(..)的行违反-找到子记录“

罗智志
2023-03-14

我有一个由四个表组成的数据库。关系模式如图所示:

下面是几行:

现在我正试图删除所有者id为OW1的所有者。因为id是所有者表中的主键,而在其他表中是外键,所以不允许我删除该行。以下是我尝试过的SQL:

 delete from owners
 where ownerid = 'OW1' and petid = 'PT1'

它返回:

ORA-02292:违反完整性约束(测试1.地址\u所有者\u FK)-找到子记录

我不允许在关系图中设置删除规则为“级联”。请帮助:(

共有2个答案

金阳华
2023-03-14

有时,找出哪些子引用表拒绝从父表中删除数据是很繁琐的。在这种情况下,我们可以使用此查询找到对主表的引用。

   select * from
       all_constraints where
            r_constraint_name in
                 (select  constraint_name from all_constraints
                  where table_name= '<PARENT_TABLE_NAME>');  

通过浏览结果列表,可以很容易地找到引用。如果需要,您可以从那里暂时禁用约束:

ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;

并在必要时重新启用它。希望这能有所帮助。

糜淇
2023-03-14

好吧,如果一个匿名块算作一个语句,只需将您的删除包在一个块中:

begin
  delete from addresses where ownerid = 'OW1';
  delete from contacts where ownerid = 'OW1';
  delete from pets where ownerid = 'OW1';
  delete from owners where ownerid = 'OW1';
end;
/

SQL小提琴。似乎有点作弊,但如果这是你得到的条件...

 类似资料:
  • 我的应用程序读取一个正在批处理作业中处理的大文件,如果它有代码“D”,它就删除account表中的行。此帐户表与CONSUMER_ID列链接的消费者表具有外键关系。删除操作的顺序正确,但有时会导致违反完整性约束的错误,从而导致作业失败。

  • 我有一个类有多个@OneTomany关系(有类似+5000个子实体),当我尝试执行deleteAll时,我得到标题错误 我试着添加 而且 我究竟如何一致地删除所有这些实体?到目前为止,自从这个问题开始以来,我已经手动删除了表(几天前所有实体都被删除了),但这真的让我很恼火,但我想不出该怎么做。 谢谢!

  • 我有以下hibernate实体: 第二点: 当我试图删除实体新闻时,我得到异常ORA-02292:完整性约束(ROOT。SYS_C007062)违反了找到的子记录。因此,如果我删除属性"updatable=false",它会尝试将可为空的字段设置为属性Comment。我犯了什么错?拜托,帮帮忙。谢谢。

  • 当我想删除任何课程的id时,也可以删除与该课程相关的复习。但是控制台上出现了一个insue。 Hibernate java ORA-02292:违反完整性约束-找到子记录 Course.java Review.java 我试图使用,但没有任何改变。 我如何解决这个问题?

  • 我遇到了一些SQL外键的问题。 下面是我的表和插入SQL。 SQL ORA-02291:违反完整性约束-未找到父键 我不知道为什么我的外键是错的?

  • 我试图为和创建会话,这两个表都与相同的外键关联到登录表-但是当我为创建种子时,我得到了错误,在我的另一个问题在这个链接中,我没有以最好的方式解释,但得到了一些关于使用(党-角色-关系模型)和这段代码下面他更多的想法有关已解决的问题链接 创建表和主键 创建表和主键 创建表以及主键和外键 使用表为管理员创建会话的过程: 使用表为用户创建会话的过程: 创建管理会话时,我收到一个错误 我做错了什么?