asoka.hang's oracle/java blog

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  4 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks

2006年4月19日 #

大家知道,oracle中没有提供修改约束条件的命令,如果要用到修改约束条件时,常规做法就是先drop掉当前约束再重新创建一个新约束条件,从应用层次而言,这样做是不妥的。

常规做法如下:
SQL >   create   table  test_constraint
  
2
  (
  
3   id  number
,
  
4   name  varchar ( 25
),
  
5   age  number   constraint  age_ct  check (age  between   0   and   99
)
  
6
  );

表已创建。

SQL
>   alter   table  test_constraint  drop   constraint
 age_ct;

表已更改。

SQL
>   alter   table  test_constraint  add   constraint  age_ct  check (age  between   18   and   99
);

表已更改。

tom在一篇文章中这样讲: “我会用两条命令:一条增加一个新的约束,另一条删除旧的约束。”,仔细理解也就是说他会先将新的约束条件进行添加以达到新的要求需求,而事后再对旧的约束条件予以drop,这种做法通过sqlplus表现如下:
SQL >   drop   table  test_constraint;

表已丢弃。

SQL
>   create   table
 test_constraint
  
2
  (
  
3   id  number
,
  
4   name  varchar ( 25
),
  
5   age  number   constraint  age_ct  check (age  between   0   and   99
)
  
6
  );

表已创建。

SQL
>   alter   table  test_constraint  add   constraint  agenew_ct  check (age  between   18   and   99
);

表已更改。

SQL
>   alter   table  test_constraint  drop   constraint
 age_ct;

表已更改。

从应用层面上而言,更改一个约束名称并不会受到影响,通过上面方法既将新的约束条件增加进去了又没有影响到应用(先drop后add的做法在这里显得是一种错误的做法)。
posted @ 2006-04-19 17:30 asoka的oracle/java博客 阅读(250) | 评论 (0)编辑 收藏