`

oracle 创建视图 with check option

阅读更多
我们来看下面的例子:
create or replace view testview
as
select empno,ename from emp where ename like ‘M%’
with check option;

这里我们创建了一个视图,并使用了with check option来限制了视图。 然后我们来看一下视图包含的结果:
select * from testview得到:
EMPNO ENAME
———- ———–
7654 MARTIN
7934 MILLER
这两条记录

然后我们在试图将其中一条更新:
update testview
set ename = ‘Mike’
where empno = 7654;
OK,这条更新语句可以执行,并没有什么问题,但是当我们执行另一条更新时:
update testview
set ename = ‘Robin’
where empno = ‘7654′;
就会出现ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句的错误,这是因为什么呢?

这是因为前面我们在创建视图时指定了witch check option关键字,这也就是说,更新后的每一条数据仍然要满足创建视图时指定的where条件,所以我们这里发生了错误ORA-01402。

但是需要说明的时 ,虽然指定了with check option,我们还是可以删除视图中的数据。例如上例中,我们可以使用
delete from test where where empno =   7654

我创建一个视图:  
  create   view   IS_student  
  as  
  select   sno,sname,sage  
  from   student  
  where   sname='IS'  
  with   check   option;  
  加上了with   check   option;后,不能执行插入操作:  
   
  insert   into   is_student  
  values('95100','李娜',12)  
   
  什么原因?不加上with   check   option则可以! 



with   check   option可以这么解释:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你insert,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。  
   
  --->而你只是查询出sdept='is'的纪录,你插入的根本不符合sname='is'呀,所以就不行

  
分享到:
评论

相关推荐

    ORACLE_视图的_with_check_option.doc

    Oracle中的`WITH CHECK OPTION`是视图创建时的一个重要特性,用于限制对视图的数据修改操作,确保修改后的数据仍然符合视图的定义条件。这个选项使得视图不仅仅是查询的工具,也成为了一种数据安全控制手段,防止...

    oracle创建视图课件

    综上所述,Oracle创建视图是一种强大的数据库管理工具,它能够提高数据管理的效率,简化复杂查询,并提供数据访问的安全性。理解和掌握视图的创建和使用是每个Oracle数据库管理员和开发人员必备的技能之一。

    Oracle创建视图(View)

    ORA-01402:视图WITH CHECK OPTION 违反WHERE 子句 视图的删除:DROP VIEW VIEW_NAME语句删除视图。 删除视图的定义不影响基表中的数据。 只有视图所有者和具备DROP VIEW权限的用户可以删除视图。 视图被删除...

    oracle视图详解

    2. 在没有 WITH CHECK OPTION 和 WITH READ ONLY 时,视图可以进行Insert、Update 和 Delete 操作。 在 Oracle 中,还有一种视图:物化视图(MATERIALIZED VIEW),也称实体化视图,快照(8i 以前的说法),它是...

    Oracle视图操作

    CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名[(别名 1[,别名2...])] AS 子查询 [WITH CHECK OPTION [CONSTRAINT 约束名]] [WITH READ ONLY] 其中: * OR REPLACE 表示替代已经存在的视图。 * FORCE 表示不管...

    Oracle-视图&序列和同义词.ppt

    其中,`OR REPLACE`允许更新已存在的视图,`FORCE`和`NOFORCE`控制基表是否存在时创建视图,`subquery`是定义视图的数据源,`WITH READ ONLY`表示视图为只读,`WITH CHECK OPTION`则在插入或更新时检查新数据是否...

    oracle视图的增删改查操作举例[参考].pdf

    然而,如果视图没有这些限制,并且使用了`WITH CHECK OPTION`,那么插入或更新的数据必须满足视图的查询条件。 例如,创建一个包含出版社名称的复杂视图: ```sql CREATE OR REPLACE VIEW 图书作者出版社(书名, ...

    oracle047课堂笔记2

    - 当使用`WITH CHECK OPTION`时,对于视图或子查询中的`WHERE`条件会持续检查。如果尝试插入的数据违反了`WHERE`条件,则插入操作会失败。 ```sql SQL> INSERT INTO (SELECT id FROM a WHERE id < 100 WITH CHECK...

    oracle oca 考题

    - **WITH CHECK OPTION**:当创建视图时加上此选项,可以在更新视图时强制执行视图定义中的WHERE子句。 - **可更新的视图**:视图v3和v1是可完全更新的,因为它们包含了所有基表的列。而v2和v4因为进行了列选择或...

    视图与查询oracle

    创建视图时,可以设置WITH CHECK OPTION来限制对基表的更新,只有符合视图条件的数据才能被修改。WITH READ ONLY则禁止在视图上执行INSERT、UPDATE和DELETE操作。视图可以简化复杂的查询,提供定制化的数据访问权限...

    00579 Oracle公司内部数据库培训资料-Les11_视图(PPT 27页).ppt

    创建视图使用`CREATE VIEW`语句,可以嵌入子查询,并可选择是否启用`WITH CHECK OPTION`来限制对视图的更新操作,或者使用`WITH READ ONLY`来创建只读视图。 创建视图的语法如下: ```sql CREATE [OR REPLACE] ...

    oracle对象创建

    #### 创建视图 ```sql Create [or replace] view viewname [alias list] as subquery ``` - **Create view**: 创建或替换视图。 - **subquery**: 定义视图的查询语句。 ```sql [with check option [constraint ...

    Oracle OCA 1Z0-051认证题库

    此题目考查了视图创建过程中`WITH CHECK OPTION`的作用以及聚合视图的限制。 ##### 3. 使用通配符和转义字符 **题目描述:** 题目要求从`SALES`表中筛选出`prod_id`字段包含特定字符串`'_D123'`的所有记录。 **...

    3.2 Oracle模式对象(2).ppt

    创建视图的语法如下: ```sql CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]]; `...

    在Oracle中向视图中插入数据的方法

    如果视图定义中使用了`WITH CHECK OPTION`子句,则不能对该视图执行`INSERT`操作。 #### 码保留表与非码保留表 1. **码保留表**:在一个包含连接的视图中,如果某个表的主键被用作连接的关键字段,那么该表被称为码...

    Oracle11g OCA认证考试试题Demo 1z0-051

    WITH CHECK OPTION确保通过视图插入或更新的数据必须满足视图定义中的条件。对于视图v1和v3,由于它们仅包含基本的列选择,并且没有聚合函数或GROUP BY子句,因此可以通过它们执行所有的DML操作。而对于v2,虽然它...

    oracle ocp 051 175题库个人整合翻译版

    - 对于选项C,虽然也指定了WITH CHECK OPTION,但问题在于它只选择了部分列,而未包括所有列,这可能会导致在某些情况下无法执行DML操作,特别是如果未选择的列具有NOT NULL约束时。 - 对于选项D,其使用了聚合...

    oracle 10g培训文档

    创建视图的语法是`create or replace view`,可以通过`with check option`来限制对视图的更新,但若视图包含不可更新的部分,则需要使用触发器进行操作。此外,视图还可以设置为只读,即`with read only`。 同义词...

    oracle 1z051

    从提供的文档片段中,我们可以看到创建视图的命令及选项,例如WITH CHECK OPTION,它用于在视图上强制实施约束。例如,创建视图的命令如“CREATE VIEW v3 AS SELECT * FROM SALES WHERE cust_id=2034 WITH CHECK ...

Global site tag (gtag.js) - Google Analytics