ORA-02266和ORA-02291错误

当尝试删除或清空包含被外部关键字引用的主键的表时,可能会遇到ORA-02266错误。解决方法包括禁用主键约束,清空表,然后重新启用主键。同样,ORA-02291错误通常发生在违反外键约束时,确保父表中有相应的主键值或者在子表中设置外键为空,可以避免此错误。通过示例展示了如何处理这两个错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       Truncate ORA-02266错误:表中的唯一/主键被启用的外部关键字引用

 这个错误应该是主键被引用

<1>我们需要先关闭主键的使用

alter table table_name disable primary key cascade;

<2>truncate

truncate table table_name

<3>开启主键的使用

alter table table_name enable primary key

        

          ORA-02291错误:违反条件约束--未找到父项关键字

  比如有表A和表B

 A表的的某个字段是主键而B表中的某个字段是外键如果A表中某个字段没有数据而要往B表中插入字段就会出现ORA-002291的错误

 这样的情况下可用把B表中这个字段置空或在A表中有值的话也可以向B表中插入数据

实验

创建表A

SQL> create table A(group_id int primarykey not null,name varchar2(20));

 

Table created.

创建表B

SQL> create table B(user_id int primarykey not null,name varchar2(20),group_id int,

 2  constraint fk foreign key(group_id) references A(group_id));

 

Table created.

A中插入数据

SQL> insert into A values(1,'oinstall');

 

1 row created.

B中插入数据

SQL> insert into B values(1,'oracle',1);

 

1 row created.

B中插入数据

SQL> insert into B values(2,'grid',2);

insert into B values(2,'grid',2)

*

ERROR at line 1:

ORA-02291: integrity constraint (SCOTT.FK)violated - parent key not found

 

A中插入数据

SQL> insert into A values(2,'dba');

 

1 row created.

 

B中插入数据

SQL> insert into B values(2,'grid',3);

insert into B values(2,'grid',3)

*

ERROR at line 1:

ORA-02291: integrity constraint (SCOTT.FK)violated - parent key not found

 

B中插入数据

SQL> insert into B values(2,'grid',2);

 

1 row created.

 

SQL>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值