`
271788203
  • 浏览: 490132 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

主键与外键之ORA-02292: integrity constraint

阅读更多

今天在删除一个表某条记录时,出现如下错误:
ORA-02292: integrity constraint (CICRO.FK8A82499F4C67C41) violated - child record found
于是查看了相关的主键和约束关系,发现了一些问题。

关于这个错误,oracle官方解决方法是:
Error: orA-02292: integrity constraint <constraint name> violated - child record found

Cause: You tried to Delete a record from a parent table (as referenced by a foreign key), but a record in the child table exists.

Action: The options to resolve this oracle error are:
This error commonly occurs when you ha a parent-child relationship established between two tables through a foreign key. You then have tried to delete a value into the parent table, but the corresponding value exists in the child table.
To correct this problem, you need to update or delete the value into the child table first an


总结一语句话,就是:

不能删除包含主键的行,该主键被用做另一个表的外键。

举个例子如下:

首先创建两个表

Create TABLE supplier 
( supplier_id numeric(10) not null, 
 supplier_name varchar2(50) not null, 
 contact_name varchar2(50),  
 CONSTRAINT supplier_pk PRIMARY KEY (supplier_id) 
); 

Create TABLE products 
( product_id numeric(10) not null, 
 supplier_id numeric(10) not null, 
 CONSTRAINT fk_supplier 
   FOREIGN KEY (supplier_id) 
   REFERENCES supplier (supplier_id) 
); 

接着向两个表写入数据

Insert INTO supplier
(supplier_id, supplier_name, contact_name)
VALUES (1000, 'Microsoft', 'Bill Gates');

Insert INTO products
(product_id, supplier_id)
VALUES (50000, 1000);



尝试删除某条记录:

Delete from supplier
Where supplier_id = 1000;



无法删除,报错:
You would receive the following error message:

ORA-02292: integrity constraint (CICRO.FK8A82499F4C67C41) violated - child record found

尝试下面方法,即可解决:

Delete from products
Where supplier_id = 1000;

Then you can delete from the supplier table:

Delete from supplier
Where supplier_id = 1000;

分享到:
评论
1 楼 w758493 2011-03-04  
这个东西, 不难,但老是范,很让人无语呀,

相关推荐

    oracle常见错误号

    13. ORA-02292:integrity constraint (constraint name) violated - child record found - 违反外键约束,子表中有与父表相关的记录。删除或更新数据前检查关联关系。 14. ORA-00936:missing expression - SQL...

    ORA-02298: 无法验证 (约束)提示未找到父项关键字的解决办法

    当数据库系统报告`ORA-02298`错误时,这意味着你试图在子表中插入的外键值在父表中没有对应的主键记录。例如,如果你有一个名为`DM_VOLREV`的子表,它有一个外键`VR_VOLID`引用`DM_VOLID`表的主键`VI_VOLID`,那么...

    Oracel 错误码查询

    - 确认外键与主键或唯一键中的列数一致; - 修改外键定义以匹配目标键。 ##### ORA-02257: 超出最大列数 - **原因**:创建表时列的数量超过了Oracle规定的限制。 - **解决方法**: - 减少表中的列数; - 考虑...

    oracle面试题

    1. 错误提示ORA-02292表明违反了外键约束。在本例中,尝试将department_id从60更改为300,但60号部门下有员工,这违反了HR.EMP_DEPT_FK这个外键约束,因为员工与部门之间存在关联,不能随意更改部门编号。答案是C。 ...

    数据完整性、主键和外键、数据类型

    ### 数据完整性、主键和外键、数据类型 #### 数据完整性 数据完整性是数据库设计中的一个核心概念,指的是确保数据库中的数据保持一致性和准确性。在实际应用中,数据完整性能够帮助我们防止非法或错误的数据被...

    数据主键和外键的错误总结

    4. **数据类型不匹配**:外键的数据类型应该与所引用的主键的数据类型相匹配。不匹配的数据类型会破坏数据的一致性和完整性。 - **解决方法**:确保外键和主键的数据类型完全一致。 5. **重载的外键**:当一张表...

    购物网站数据库设计表.doc

    - Roleid:角色ID,主键,自动递增,表示不同的用户权限级别。 - Rolename:角色名称,如“普通用户”、“管理员”等。 3. 功能表(functions): - Fid:功能ID,主键,自动递增,对应系统中的不同操作或功能。 ...

    学生成绩管理系统数据库表结构说明.pdf

    - ClassID:班级编号,与班级表关联。 - DormitoryId:宿舍编号,可能用于记录住宿信息。 - National:民族,Nchar类型,长度为2个字符。 - EmploymentStatus:就业情况,Nvarchar类型,存储长度为10个汉字,...

    api接口文档1

    - year:专业年份,可能与入学年份相关。 - classnumber:班级数量,表示该专业有多少个班级。 9. 学生信息表(Student) - sex:学生的性别,枚举类型,可选'男'或'女'。 - id:学生的唯一标识,主键。 - ...

    ORACLE ORA

    在Oracle数据库管理与操作过程中,经常会遇到各种ORA错误提示。这些错误通常包含一个错误代码(如ORA-01650)以及简短的描述信息,用于帮助DBA或开发者定位问题所在。本文将详细介绍ORA错误的一般出现位置、常见ORA...

    谷粒商城数据库创建表sql

    - gid:商品ID,主键,自增长 - name:商品名称 - price:商品价格 - stock:库存量 - description:商品描述 - category_id:所属分类ID,外键 2. 用户表(Users) - uid:用户ID,主键,自增长 - ...

    主键和外键.doc

    ### 主键与外键详解 #### 一、主键与外键的概念 在关系型数据库中,每条记录都有若干个属性(字段),如果其中的一个属性组能够唯一地标识一条记录,那么这个属性组就可以成为一个主键。例如: - **学生表**...

    解析MySQL创建外键关联错误 - errno:150

    1. **数据类型不匹配**:外键字段与主键字段的数据类型必须完全一致,包括大小和符号。例如,`INT(10)`和`INT(11)`虽然在大多数情况下表现相同,但在创建外键时需要精确匹配。同时,`SIGNED`和`UNSIGNED`的标志也...

    图书订购系统的描述和查询题目

    - 订单号:订单的唯一标识,既是主键也是外键,关联订单信息表。 - 书号:图书的唯一标识,外键,关联图书信息表。 - 订购价格:每本书的订购价格。 - 订购数量:客户订购的图书数量。 4. **订单信息表**: - ...

    主键与外键的创建

    本文将深入探讨主键与外键的创建,帮助初学者更好地理解这两个概念。 **主键(Primary Key)**是用于唯一标识数据库表中每条记录的字段或一组字段。主键的特性包括: 1. 唯一性:主键的值在表中必须是唯一的,不...

    OA数据库设计.doc

    - UserId:作为主键,用于唯一标识每个用户,通常自增长。 - UserName:存储用户的登录名,用于身份验证。 - PassWord:保存用户的加密密码,确保安全性。 - Address:记录用户的联系地址。 - RoleId:关联用户...

    SQL中的主键和外键.doc

    #### 一、主键与外键的概念 在关系型数据库中,每条记录都包含若干个属性。如果其中的一个属性组能够唯一地标识一条记录,则该属性组可以被称为“主键”。例如: - 在学生表中(学号,姓名,性别,班级),学号是...

Global site tag (gtag.js) - Google Analytics