ORA-01442: column to be modified to NOT NULL is already NOT NULL
来源:互联网 发布:值得入手高达模型 知乎 编辑:程序博客网 时间:2024/06/06 07:32
前一段时间,某Schema下数据约束被设置为DISABLE后,SAR当时支援解决。几个月后,我在比对各Schema数据对象时,发现存在差异。报出ORA-01442 错误。
后了解到SAR在处理问题时,将资料库的约束设置为:启动非校验 。
1,模拟环境
create table test(name varchar2(20) not null novalidate);
-- 修改字段约束
SQL> alter table test modify name not null;
alter table test modify name not null
ORA-01442: column to be modified to NOT NULL is already NOT NULL
出现了ora-01442,这是因为在建表时,使用了约束失效(novalidate)的限制。
2,查询约束的当前状态信息
SQL> select constraint_name,constraint_type,status,validated
2 from user_constraints
3 where constraint_name in (select constraint_name from user_cons_columns where table_name='TEST' and column_name='NAME');
CONSTRAINT_NAME CONSTRAINT_TYPE STATUS VALIDATED
------------------------------ --------------- -------- -------------
SYS_C005247 C ENABLED NOT VALIDATED
约束的状态为ENABLED但是VALIDATED为无效,所以这个表的约束失效,导致可以插入空值!
3,解决问题
--将约束改为有效即可
SQL> alter table test enable validate constraint SYS_C005247;
Table altered
SQL> alter table test modify name null;
Table altered
SQL> desc test;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
NAME VARCHAR2(20) Y
ID INTEGER Y
SQL> alter table test modify name not null;
Table altered
SQL> desc test;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
NAME VARCHAR2(20)
ID INTEGER Y
所以当遇到修改约束不成功的时候,应该先看看约束是否失效,如果失效就必须将约束改为有效后才能修改约束条件!
- 软件结构设计
- 郑轻校赛总结
- 大公司病
- 在 MFC SDI 程序中实现多语言程序界面
- MFC的多国语言界面的实现
- ORA-01442: column to be modified to NOT NULL is already NOT NULL
- 神州数码UDP报文密文字典
- openlayers 加载googlemap v3 遭遇弹出copyright 异常的解决
- How Hadoop Works? HDFS case study
- 屏蔽双击选中文字的解决办法,兼容ie,google,firefox
- 今天的让你们猜一下子的即时通讯
- hdu 二维树状数组 简单题目 靠。。。。。扯蛋的悲哀,如果上天给我一种干掉你的愿望,我宁愿放弃——努力的结晶
- 今天的你能原谅我吗的飞秋爱好者
- J2EE的13个规范概述