how to solve ORA-02293
这个错误发生在今天早上要增加一个表的检查约束的时候,具体报错表现为:
ORA-02293: 无法验证 (STORE.CHECK_STU_ID) - 违反检查约束条件
这是因为已经存在于表中的数据违反了即将要创建的检查约束的条件。
解决办法是创建约束的时候增加novalidate子句,这样就不会对已经存在的数据进行检查了,让我们能够顺利的进行约束的创建,创建后的约束只会对之后添加的数据进行生效并检查。
如下:
store@TEST> desc iotstu;
名称 是否为空? 类型
----------------------------------------------------- -------- ------------------------------------
ID NOT NULL NUMBER(10)
NAME VARCHAR2(20)
store@TEST> select * from iotstu;
ID NAME
---------- --------------------
10 aa
store@TEST> alter table iotstu add constraint check_stu_id check(id>=100);
alter table iotstu add constraint check_stu_id check(id>=100)
*
第 1 行出现错误:
ORA-02293: 无法验证 (STORE.CHECK_STU_ID) - 违反检查约束条件
store@TEST> alter table iotstu add constraint check_stu_id check(id>=100) novalidate;
表已更改。
store@TEST> commit;
提交完成。
store@TEST> select * from iotstu;
ID NAME
---------- --------------------
10 aa
store@TEST> insert into iotstu values(9,'bb');
insert into iotstu values(9,'bb')
*
第 1 行出现错误:
ORA-02290: 违反检查约束条件 (STORE.CHECK_STU_ID)
store@TEST>
-The End-