« 基于主键和唯一约束的显示索引控制 | Blog首页 | 2月份的最后一天 »
Oracle9i基于视图(view)的约束声名
作者:eygle |【转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】链接:http://www.eygle.com/archives/2006/02/oracle9i_view_constraints_declarative.html
从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 |
By eygle on 2006-02-27 17:27 | Comments (6) | Posted to SQL.PLSQL | Edit |Pageviews:
| 相关文章 | 随机文章 |
|
|
Tools:OSW工具-Oracle的OS watcher 聆听意大利爵士音乐演奏会 EMC 错了么 之 终结篇 为何而心跳-Oracle Heartbeat研究之二 首届杰出数据库工程师评选文集 |
留言 (6)
rely子句仅在query rewrite时会有用
Posted by: anysql at February 27, 2006 4:58 PM
恩,RELY和NORELY在这里都是允许的。
Posted by: eygle at February 27, 2006 5:01 PM
那它要这个约束就是没有实际的意义吗?
Posted by: sopher at February 27, 2006 10:13 PM
要这个约束干什么呢?
Posted by: lily at February 28, 2006 8:13 AM
嘿嘿,这个问题问的好:)
其实这是一个针对Data Warehouse的一个增强.
在Data Warehouse中,立方的识别需要通过数据字典中的引用一致性约束,此前基于事实表和维表通过View创建的Cube是不能被正确识别的.
这就是这个增强的意义所在.
Posted by: eygle at February 28, 2006 9:41 AM
学到知识了^_^
Posted by: sopher at February 28, 2006 4:37 PM
