9.2.6 创建带约束的视图

前面介绍了在不同的环境下如何创建视图,相信读者已经掌握方法了。接下来介绍一下如何创建带约束的视图。

【示例6】创建带约束的视图

创建名为CONST_PRODUCTINFO_VIEW的视图,此视图包含唯一约束和一个主键约束。可以在PL/SQL Developer的SQL窗口或Command窗口(和SQL*Plus效果接近)下执行如下脚本:


01 CREATE OR REPLACE VIEW CONST_PRODUCTINFO_VIEW

02 (

03 PRODUCTID,

04 PRODUCTNAME CONSTRAINT PRODUCTNAME_UNQ UNIQUE RELY DISABLE NOVALIDATE,

05 PRODUCTPRICE,

06 QUANTITY,

07 CATEGORY,

08 ORIGIN,

09 CONSTRAINT VI_PRODUCTID_PRK PRIMARY KEY(PRODUCTID)RELY DISABLE NOVALIDATE

10 )

11 AS

12 SELECT PRODUCTID,PRODUCTNAME,PRODUCTPRICE,QUANTITY,CATEGORY,ORIGIN

13 FROM PRODUCTINFO

14 WHERE ORIGIN='中国'

15 WITH CHECK OPTION;


【代码解析】

❑第1~9行表示视图列的名称,共有6个字段。

❑第4行使用inline方式对列PRODUCTNAME创建UNIQUE约束。

❑第9行使用out_of_line方式对视图设置主键约束。

❑第4和第9行中的RELY DISABLE NOVALIDATE表示约束对此前和此后的数据都不进行检查,并告知Oracle此视图现在符合这两种约束条件。

❑第11~15行前面已经介绍过,这里不再赘述。

注意 本小节所介绍的视图约束比较特殊。它的约束是声明式的,并不能真正作用于视图本身。当创建约束后增加或更新违背约束的数据时,它会执行成功。从代码说明的第3行和第8行解释也能看出,这种声明实际上是告诉Oracle优化器它的数据是符合约束条件的,但Oracle本身并没有验证数据是否真的符合条件。