约束维护之keep index介绍
我们通常的操作是向表中的一列或几列添加一个唯一约束,但有些时候,因为应用方面的原因或者其它原因,我们又需要把约束删掉,但要保留索引.本篇文章就介绍了如何使用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的语法,以避免意想不到的问题发生.
- 本文关键词:

