February 27, 2006
Oracle9i基于视图(view)的约束声名
作者:eygle
出处:http://blog.eygle.com
从Oracle9i开始,Oracle允许对于视图(view)进行主键、唯一键、外键约束的声名。NOT NULL约束可以从基表继承,所以不允许显示声明。
由于视图约束仅仅是声明而已,所以其状态只能是DISABLE NOVALIDATE。
以下是一个简单范例说明:
SQL> CREATE VIEW d10_emp View created. SQL> select * from d10_emp; EMPNO ENAME JOB DEPTNO SQL> select CONSTRAINT_NAME,TABLE_NAME,CONSTRAINT_TYPE from user_constraints CONSTRAINT_NAME TABLE_NAME C |
由于此约束仅仅为"约束声明",所以不具有实际约束力:
SQL> insert into d10_emp values(7777,'EYGLE','MANAGER',10); 1 row created. SQL> insert into d10_emp values(8888,'EYGLE','MANAGER',10); 1 row created. SQL> select * from d10_emp; EMPNO ENAME JOB DEPTNO |
Posted by eygle at 5:27 PM | Comments (6)
基于主键和唯一约束的显示索引控制
作者:eygle
出处:http://blog.eygle.com
从Oracle9i开始,主键创建时的索引和唯一性约束可以在建表时独立定义。
随后,约束可以被独立drop,而索引可以保留。这是Oracle9i中对于索引增强的几个特性之一。
SQL> CREATE TABLE employees Table created. SQL> select index_name,UNIQUENESS from user_indexes INDEX_NAME UNIQUENES SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,INDEX_NAME from user_constraints CONSTRAINT_NAME C INDEX_NAME |
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 INDEX_NAME UNIQUENES |
对于隐式创建的主键索引,同样可以使用此种方式保留:
SQL> CREATE TABLE employees Table created. SQL> ALTER TABLE employees DROP PRIMARY KEY KEEP INDEX; Table altered. SQL> select index_name,UNIQUENESS from user_indexes INDEX_NAME UNIQUENES |
Posted by eygle at 12:18 PM | Comments (1)
