eygle.com   eygle.com
eygle.com  
 

« Oracle HowTo:如何使用Leading提示改变表连接方式 | Blog首页 | Oracle9i基于视图(view)的约束声名 »

基于主键和唯一约束的显示索引控制

作者:eygle |【转载时请务必以超链接形式标明文章和作者信息及本声明
链接:

从Oracle9i开始,主键创建时的索引和唯一性约束可以在建表时独立定义。
随后,约束可以被独立drop,而索引可以保留。这是Oracle9i中对于索引增强的几个特性之一。

SQL> CREATE TABLE employees
  2  (
  3    empno NUMBER(6),
  4    NAME VARCHAR2(30),
  5    dept_no NUMBER(2),
  6    CONSTRAINT emp_pk PRIMARY KEY(empno)
  7      USING INDEX
  8      (CREATE UNIQUE INDEX emp_pk_idx ON employees(empno))
  9  );
Table created.
SQL> select index_name,UNIQUENESS from user_indexes
  2  where table_name=upper('employees');
INDEX_NAME                     UNIQUENES
------------------------------ ---------
EMP_PK_IDX                     UNIQUE
SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,INDEX_NAME from user_constraints
  2  where table_name=upper('employees');
CONSTRAINT_NAME                C INDEX_NAME
------------------------------ - ------------------------------
EMP_PK                         P EMP_PK_IDX 

Oracle9i中新增的命令可以用以DROP约束保留索引.

ALTER TABLE employees DROP PRIMARY KEY KEEP INDEX;

SQL> ALTER TABLE employees DROP PRIMARY KEY KEEP INDEX;
Table altered.
SQL> select index_name,UNIQUENESS from user_indexes
  2  where table_name=upper('employees');
INDEX_NAME                     UNIQUENES
------------------------------ ---------
EMP_PK_IDX                     UNIQUE 

对于隐式创建的主键索引,同样可以使用此种方式保留:

SQL> CREATE TABLE employees
  2  (
  3    empno NUMBER(6) primary key,
  4    NAME VARCHAR2(30),
  5    dept_no NUMBER(2)
  6  );
Table created.
SQL> ALTER TABLE employees DROP PRIMARY KEY KEEP INDEX;
Table altered.
SQL> select index_name,UNIQUENESS from user_indexes
  2  where table_name=upper('employees');
INDEX_NAME                     UNIQUENES
------------------------------ ---------
SYS_C004180                    UNIQUE
-----
这篇 【基于主键和唯一约束的显示索引控制】来自 www.eygle.com | CSDN技术网摘| del.icio.us|365Key

By eygle on 2006-02-27 12:18 | Comments (1) | Posted to SQL.PLSQL | Edit |Pageviews:

相关文章 随机文章
  • 在Oracle9i中,如何监视索引并清除监视信息
  • Oracle的分区表和Local索引创建与维护
  • Oracle Peeking绑定变量的控制
  • 见识了一次Oracle9i标准版
  • 索引 索引 还是索引
  • Log Block Size
    使用orastress!进行数据库压力测试
    扩展Oracle10gR2 ASM磁盘空间
    Oracle Database 11g技术交流会结束
    戴尔(Dell)即将召回我的笔记本电池
    网上相关主题:
    Google

    留言 (1)

    我一般喜欢建完表以后,再增加约束
    alter table table_name add constraint pk_table_name primary key (字段名)
    using index (create unique index pk_table_name on table_name (字段名) tablespace);


    独立创建还有另外一个好处就是可以将对键对应的唯一索引建里其他的表空间上。呵呵。

    Posted by: 托马斯张 at February 27, 2006 8:29 PM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004 eygle.com, All rights reserved.