`
yzhming
  • 浏览: 33189 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

唯一性索引和唯一性约束

 
阅读更多

SQL> create unique index idx_uni_empno_copy on emp_copy(empno);

Index created.

注意这里的index_type不代表是否唯一性索引,要看UNIQUENESS 字段

SQL> select index_name,status,num_rows,index_type from user_indexes where table_name='EMP_COPY';

INDEX_NAME                     STATUS     NUM_ROWS INDEX_TYPE
------------------------------ -------- ---------- ---------------------------
IDX_UNI_EMPNO_COPY             VALID         14 NORMAL


SQL> alter table emp_copy add constraint cons_uni_empname unique(ename);

Table altered.

SQL> select index_name,status,num_rows,index_type from user_indexes where table_name='EMP_COPY';

INDEX_NAME                     STATUS     NUM_ROWS INDEX_TYPE
------------------------------ -------- ---------- ---------------------------
IDX_UNI_EMPNO_COPY             UNUSABLE         14 NORMAL
CONS_UNI_EMPNAME               VALID            14 NORMAL

SQL> select index_name,status,num_rows,index_type,UNIQUENESS from user_indexes where table_name='EMP_COPY';

INDEX_NAME                     STATUS     NUM_ROWS INDEX_TYPE
------------------------------ -------- ---------- ---------------------------
UNIQUENES
---------
IDX_UNI_EMPNO_COPY             VALID         14 NORMAL
UNIQUE

CONS_UNI_EMPNAME               VALID            14 NORMAL
UNIQUE

唯一性约束的索引不能直接删除,要先删除约束然后再删除对应的索引

SQL> drop index CONS_UNI_EMPNAME;
drop index CONS_UNI_EMPNAME
           *
ERROR at line 1:
ORA-02429: cannot drop index used for enforcement of unique/primary key


SQL> alter table emp_copy drop constraint CONS_UNI_EMPNAME;

Table altered.

SQL> select index_name,status,num_rows,index_type,UNIQUENESS from user_indexes where table_name='EMP_COPY';

INDEX_NAME                     STATUS     NUM_ROWS INDEX_TYPE
------------------------------ -------- ---------- ---------------------------
UNIQUENES
---------
IDX_UNI_EMPNO_COPY             VALID         14 NORMAL
UNIQUE


SQL> drop index IDX_UNI_EMPNO_COPY ;

Index dropped.





解决ORA-02429和ORA-02297错误 (2007-09-19 16:43:22)转载▼
标签: 杂谈 分类: MSN搬家
    解决了两个错误:
ORA-02429: cannot drop index used for enforcement of unique/primary key
ORA-02297: cannot disable constraint (XXX_DJCM.PK_CONTAINER) - dependencies exist

  开发的同事说有一索引已经无用,要求删除,那知道执行的时候出错:
SQL>drop index CONTAINER_I_CONTAINER_REF_NO_C;
ORA-02429: cannot drop index used for enforcement of unique/primary key

SQL>ALTER TABLE CONTAINER MODIFY PRIMARY KEY DISABLE;
ORA-02297: cannot disable constraint (XXX_DJCM.PK_CONTAINER) - dependencies exist

SQL>select owner, CONSTRAINT_NAME, TABLE_NAME, CONSTRAINT_TYPE
  from user_constraints
where table_name = 'CONTAINER';
SQL>alter table CONTAINER disable constraint PK_CONTAINER cascade;
SQL>ALTER TABLE CONTAINER MODIFY PRIMARY KEY DISABLE;
-- Drop indexes
SQL>drop index CONTAINER_I_CONTAINER_REF_NO_C;
SQL>ALTER TABLE CONTAINER MODIFY PRIMARY KEY ENABLE;
SQL>alter table CONTAINER ENABLE constraint PK_CONTAINER;
分享到:
评论

相关推荐

    主键索引与唯一索引的区别

    2、 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 3、 唯一性索引列允许空值,而主键列不允许为空值。 4、 主键列在创建时,已经默认为空值 ++ 唯一索引了。 5、 一个表最多只能创建一个主键...

    ORACLE教材

    唯一性约束 CHECK约束 NOT NULL约束 利用Enterprise Manager管理约束 第八章:管理索引、视图与序列使用约束 索引概述 B树索引(默认) 位图索引 函数索引 视图 序列 利用OEM操作 第九章:备份与恢复...

    MySQL 主键与索引的联系与区别分析

    主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据...

    mysql为字段添加和删除唯一性索引(unique) 的方法

    下面小编就为大家带来一篇mysql为字段添加和删除唯一性索引(unique) 的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    MySQL中的唯一性约束与NULL详解

    为了防止他们重复发消息,插入多条重复记录,所以在表中的几个列上加了个唯一性索引。 CREATE UNIQUE INDEX IDX_UN_LOAN_PLAN_APP ON testTable (A, B, C); 这时 A,B,C 三列都是不允许 NULL 值的,唯一性约束也是 ...

    实现记录唯一性——-用健实现

    当为表指定primary key 约束时,oricle通过为主键列创建唯一索引强制数据的唯一性。当在查询中使用主键时,该索引还可以用来对数据进行快速访问。如果primary key 约束定义在不止一列上,则一列中的值可以重复,但...

    桌面运维HELPDESK常用面试题

    6. MySQL中InnoDB存储引擎和MyISAM存储引擎有什么区别 InnoDB支持事务,MyISAM不支持; InnoDB数据存储在共享表空间,...唯一索引:和普通索引类似,但是具有唯一性约束。 主键索引:特殊的唯一索引,不允许有空值。

    索引的优点和缺点第1/2页

    第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有...

    mysql索引原理与用法实例分析

    而基本上索引都要求唯一(有些不是),所以某种程度上也约束了数据的唯一性。 索引创建在数据表对象上,由一个或多个字段组成,这若干个字段组成“键”存储到数据结构中(B树或者哈希表)。【可以根据数据结构分类成...

    (mysql面试题)MySQL中的索引、主键和外键的概念及其作用及代码展示.txt

    - 唯一标识每一行数据,确保数据的唯一性; - 作为其他表的外键引用,实现表与表之间的关联; - 加速查询操作,通过主键可以快速定位到所需的数据。 3. 外键(Foreign Key): 外键是数据库表中用于与其他表...

    MySQL索引的基本语法

    2.唯一索引(UNIQUE):在普通索引的基础上增加了数据唯一性的约束,可以有多个 3.主键索引(primary key):主键索引在唯一索引的基础上增加了不为空的约束,也就是 NOT NULL+UNIQUE,只能有一个 4.全文索引(FULLTEXT)...

    MySQL索引之主键索引

    主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。 在MySQL中,InnoDB数据表的主键设计我们...

    如何通过索引让SQL查询效率最大化?

    前言 我们都知道SQL性能调优可以从两个维度去进行优化,一个逻辑查询优化,另一个是物理查询优化。...索引本身可以起到约束的作用,比如唯一索引,主键索引都是可以起到唯一性约束的。在数据表中,如果某个字段是唯一性

    database_consistency:查找模型架构和数据库约束之间不一致的工具

    我们可以: 查找缺少的空约束( ) 查找缺少的长度验证( ) 查找缺少的状态验证( ) 查找缺少的唯一性验证( ) 为BelongsTo关联查找丢失的外键( ) 查找缺少的唯一索引以进行唯一性验证( ) 查找HasOne和Has...

    MySQL语句汇总

    文章目录MySQL语句汇总第一章:数据库基础知识:一、对数据库的操作二、数据表的基本操作:三、表的约束四、设置表的字段值自动增加第二章:索引1、创建表的时候创建索引1> 创建普通索引2> 创建唯一性索引3> 创建...

    数据库系统概论chp3-2.pptx

    聚集索引和非聚集索引均可用于强制表内的唯一性,方法是在现有表上创建索引时指定UNIQUE关键字。确保表内唯一性的另一种方法是使用UNIQUE约束。 数据库系统概论chp3-2全文共66页,当前为第11页。 创建索引的方法 1....

    SQL Server系统调优解决方案

    1. 通过唯一性索引(unique)可确保数据的唯一性 2. 加快数据的检索速度 3. 加快表之间的连接 4. 减少分组和排序的时间  使用索引的原则 1. 在需要经常搜索的列上创建索引 2. 经常用于连接的列上创建索引 3. 经常...

    掌握MySQL面试技巧.pptx

    2、MySQL索引:索引是MySQL中优化查询性能的重要手段,会影响到数据库的查询速度和数据唯一性等方面。因此,在面试过程中,需要掌握索引的各种类型以及创建、调整、删除等操作。 3、MySQL约束:约束是用来限制MySQL...

    基于Python的数据库实现.rar

    从底层做起,实现数据库的组织、存储...创建数据表时需要包含主码外码、唯一性约束、非空约束等完整性约束的定义 执行SELECT语句,从自主设计的数据表中查询数据,并输出结果;在SELECT语句中需要支持GROUP BY、HAVIN

    数据库课程设计.教务管理系统

    5.1. 主键及唯一性索引 () 5.2. 参照完整性设计 () 5.3. Check约束 () 5.4. Default约束 () 5.5. 触发器设计 () 6. 数据库视图设计 () 7. 数据库存储过程设计 () 8. 权限设计 () 9. 总结 () 参考资料 ()

Global site tag (gtag.js) - Google Analytics