ITPub博客

首页 > 数据库 > Oracle > Oracle9i基于视图(view)的约束声名

Oracle9i基于视图(view)的约束声名

原创 Oracle 作者:m77m78 时间:2007-06-07 12:05:42 0 删除 编辑

从Oracle9i开始,Oracle允许对于视图(view)进行主键、唯一键、外键约束的声名。NOT NULL约束可以从基表继承,所以不允许显示声明。
由于视图约束仅仅是声明而已,所以其状态只能是DISABLE NOVALIDATE。

以下是一个简单范例说明:

[@more@]

从Oracle9i开始,Oracle允许对于视图(view)进行主键、唯一键、外键约束的声名。NOT NULL约束可以从基表继承,所以不允许显示声明。
由于视图约束仅仅是声明而已,所以其状态只能是DISABLE NOVALIDATE。

以下是一个简单范例说明:


SQL> CREATE VIEW d10_emp 2 ( empno, ename, job,deptno, 3 CONSTRAINT pk_d10 4 PRIMARY KEY (ename) 5 RELY DISABLE NOVALIDATE 6 ) AS 7 SELECT empno, ename, job ,deptno 8 FROM emp 9 WHERE deptno = 10;
View created.
SQL> select * from d10_emp;
EMPNO ENAME JOB DEPTNO---------- ---------- --------- ---------- 7782 CLARK MANAGER 10 7839 KING PRESIDENT 10 7934 MILLER CLERK 10
SQL> select CONSTRAINT_NAME,TABLE_NAME,CONSTRAINT_TYPE from user_constraints 2 where table_name='D10_EMP';
CONSTRAINT_NAME TABLE_NAME C------------------------------ ------------------------------ -PK_D10 D10_EMP P

由于此约束仅仅为"约束声明",所以不具有实际约束力:

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---------- ---------- --------- ---------- 7782 CLARK MANAGER 10 7839 KING PRESIDENT 10 7934 MILLER CLERK 10 7777 EYGLE MANAGER 10 8888 EYGLE MANAGER 10

-----

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/34329/viewspace-917867/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-04-25

  • 博文量
    168
  • 访问量
    764658