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本身并没有验证数据是否真的符合条件。