jwwt 2016年07月19日
菜鸟疑问: 关于修改check 约束
( 创建表t , 并字段id 使用check约束 : 取值1~100)
> create table t ( id int , constraint ck_t check(id between 10 and 100);
>表已创建;

(接续操作:扩大取值范围 5~200)
> alter table t add constraint ck_t1 check(id between 5 and 200);
>表已更改;

( 接续操作:缩小范围 20~80)
>alter table t add constraint ck_t2 check(id between 20 and 80);
>表已更改;

(接续操作:再次扩大范围200~300
> alter table t add constraint ck_t3 check(id between 200 and 300);
>ORA-022293,无法验证SCOTT-CK_T3,违反检查约束条件

这里,
问题1 :最后一个ck_t3 ,为什么没能生效, 上面我做了几个(溢出范围)扩大和缩小check范围的尝试,都没报错,
这次为什么报错?? 这里有范围的因素么? 如果有,以哪个范围为准?
问题2 :上面生成的 ck_t, ck_t1, ck_t2 这三个check约束是同时作用于id 列? 还是说,是覆盖替换的形式(比如t1 覆盖t ,
后面t2又覆盖了t1,是这样么?)


另外,
问题3 : 某列已存在check约束,怎么修改check约束(在不删除表和原有check约束的基础上)??
我尝试用: alter table t modify constraint ck_t check(id ......, 始终没能成功,
可不可以用modify 这种形式? 可以的话, 请帮举个示例。
...全文
71 点赞 收藏 6
写回复
6 条回复

还没有回复,快来抢沙发~

发动态
发帖子
基础和管理
创建于2007-09-28

7172

社区成员

9.5w+

社区内容

Oracle 基础和管理
社区公告
暂无公告