從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             10SQL> 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 
                         -----原文地址:http://www.eygle.com/archives/2006/02/oracle9i_view_constraints_declarative.Html