重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4802|回复: 2
打印 上一主题 下一主题

普通索引列和主健列一样导致的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-22 15:23:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SQL> CREATE TABLE EMP AS SELECT * FROM employees;

SQL> desc emp;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPLOYEE_ID                                        NUMBER(6)
 FIRST_NAME                                         VARCHAR2(20)
 LAST_NAME                                 NOT NULL VARCHAR2(25)
 EMAIL                                     NOT NULL VARCHAR2(25)
 PHONE_NUMBER                                       VARCHAR2(20)
 HIRE_DATE                                 NOT NULL DATE
 JOB_ID                                    NOT NULL VARCHAR2(10)
 SALARY                                             NUMBER(8,2)
 COMMISSION_PCT                                     NUMBER(2,2)
 MANAGER_ID                                         NUMBER(6)
 DEPARTMENT_ID                                      NUMBER(4)
SQL> create index idx_emp_id on emp(employee_id,last_name,email);


SQL> alter table emp add constraint pk_emp_id_name_email primary key(employee_id,last_name,email);
重庆-郑全(24803366)  15:16:10


看到确实只有一个索引:
SQL> select index_name,uniqueness from user_indexes where table_name='EMP';

INDEX_NAME                     UNIQUENES
------------------------------ ---------
IDX_EMP_ID                     NONUNIQUE


马上删除索引,报错:
SQL> drop index IDX_EMP_ID;
drop index IDX_EMP_ID
           *
ERROR at line 1:
ORA-02429: cannot drop index used for enforcement of unique/primary key

索引和主健一样导致的问题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
 楼主| 发表于 2013-2-22 15:26:27 | 只看该作者

看来主健后建把索引先占住了,先停约束,再删除索引

SQL> alter table emp disable constraint pk_emp_id_name_email;

Table altered.

SQL> drop index IDX_EMP_ID;

Index dropped.

SQL> alter table emp enable constraint pk_emp_id_name_email;

Table altered.

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

INDEX_NAME                     UNIQUENES
------------------------------ ---------
PK_EMP_ID_NAME_EMAIL           UNIQUE

 

主健对应的索引又回来了

 

SQL> create index idx_emp_id on emp(employee_id,last_name,email);

Index created.

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

INDEX_NAME                     UNIQUENES
------------------------------ ---------
IDX_EMP_ID                     NONUNIQUE
PK_EMP_ID_NAME_EMAIL           UNIQUE

现在是两个索引了

[此贴子已经被作者于2013-2-22 15:30:38编辑过]
回复 支持 反对

使用道具 举报

板凳
发表于 2013-2-22 15:45:00 | 只看该作者
这个应该是很有价值的东西,同学们空了一定看看,同时也一定多多重视SQL的学习,因为确实很有用!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-25 18:23 , Processed in 0.139163 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表