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

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

6ee5639a40442445944d63b514b2dd02.png

从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

By eygle on 2006-02-27 17:27 |

Comments (6) |

SQL.PLSQL | 696 |

6 Comments

嘿嘿,这个问题问的好:)

其实这是一个针对Data Warehouse的一个增强.

在Data Warehouse中,立方的识别需要通过数据字典中的引用一致性约束,此前基于事实表和维表通过View创建的Cube是不能被正确识别的.

这就是这个增强的意义所在.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值