CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

约束维护之keep index介绍

作者: zhaolinjnu,  出处:Blog, 责任编辑: 李书琴, 
2008-02-14 00:08
  我们通常的操作是向表中的一列或几列添加一个唯一约束,但有些时候,因为应用方面的原因或者其它原因,我们又需要把约束删掉,但要保留索引.本篇文章就介绍了如何使用keep index的语法。

  我们通常的操作是向表中的一列或几列添加一个唯一约束,但有些时候,因为应用方面的原因或者其它原因,我们又需要把约束删掉,但要保留索引.本篇文章就介绍了如何使用keep index的语法,请看下面的实验:

  1.不使用keep index的语法来删除约束的情况: 

SQL> create table t1(id number,nick varchar2(20));

 Table created.

SQL> alter table t1 add constraint uk_t1_id unique(id);

 Table altered.

 SQL> select table_name,index_name from user_indexes where table_name='T1';

 TABLE_NAME                     INDEX_NAME

------------------------------ ------------------------------

T1                             UK_T1_ID

 SQL> alter table t1 drop constraint uk_t1_id;

 Table altered.

 SQL> select table_name,index_name from user_indexes where table_name='T1';

 no rows selected

  2.使用keep index的语法来删除约束的情况

SQL> alter table t1 add constraint uk_t1_id unique(id);

 Table altered.

SQL> select table_name,index_name from user_indexes where table_name='T1';

 TABLE_NAME                     INDEX_NAME

------------------------------ ------------------------------

T1                             UK_T1_ID

SQL> alter table t1 drop constraint uk_t1_id keep index;

 Table altered.

SQL> select table_name,index_name from user_indexes where table_name='T1';

 TABLE_NAME                     INDEX_NAME

------------------------------ ------------------------------

T1                             UK_T1_ID

  如果在创建约束前,先创建了索引;那么在删除约束时默认都只删除约束,而不会删除索引.如果你想在删除约束时,保留索引,我建议还是最好明确使用keep index的语法,以避免意想不到的问题发生.

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i