- 浏览: 786172 次
- 性别:
- 来自: 广州
文章分类
最新评论
我们来看下面的例子:
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'呀,所以就不行
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 10g 的clusterware 32位 下载地址
2013-04-19 23:03 1214Oracle 10g 的clusterware 32位 下载地 ... -
oracle 分析函数 RANK()
2013-04-11 00:05 1099RANK()既是一个聚合函数,也是一个分析函数 其具体的语法 ... -
oracle 分析函数
2013-04-09 23:25 1174分析函数是用于计算一组中多行的聚合值,与聚合函数的区别在于聚合 ... -
批量执行 bulk collect与forall用法
2013-04-08 23:49 1394BULK COLLECT 子句会批量检 ... -
pl/sql集合类型
2013-03-26 10:12 1575--集合类型 /* 单行单列的数据,使用标量变量 单行 ... -
oracle 行链接与行迁移
2013-03-16 01:06 1105表里的一行对于一个数据块太大的情况有二种(一行在一个数据块里放 ... -
oracle Health Monitor
2013-01-20 00:02 1614About Health Monitor Beginning ... -
oracle moving window size与 AWR retention period关系
2013-01-19 15:58 8487转自: http://tomszrp.itpub.net/po ... -
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
2013-01-12 00:20 2915insert提示IGNORE_ROW_ON_DUPKEY_IN ... -
oracle 11g新特性Flashback data archive
2013-01-09 22:52 30871. 什么是flashback data archive F ... -
RMAN List和report 命令
2012-12-25 00:07 2900LIST 命令 使用RMAN LIST 命令显示有关资料档案库 ... -
oracle ASM中ASM_POWER_LIMIT参数
2012-12-24 23:46 6432ASM_POWER_LIMIT 该初始化参数用于指定ASM例程 ... -
oracle I/O 从属进程
2012-12-24 23:24 1427I/O 从属进程 I/O从 ... -
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
2012-12-19 23:43 5640用easy connect连接出现“tns无法解析指定的连接标 ... -
Flashback Database --闪回数据库
2012-12-19 23:38 1393Flashback 技术是以Undo segment中的内容为 ... -
Oracle 11g新特性:Automatic Diagnostic Repository
2012-12-19 22:35 1395Oracle Database 11g的FDI(Fault D ... -
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
2012-12-19 22:09 2700RMAN配置中通道(CHANNEL)相 ... -
oracle 空间RESUMABLE
2012-12-14 22:05 3061空间RESUMABLE操作 转 Oracle从9i开始 ... -
flashback transaction闪回事务查询
2012-11-26 22:00 1505闪回事务查询有别于闪回查询的特点有以下3个: (1) ... -
pl/sql连不上oracle数据库
2012-11-21 22:56 3751pl/sql 9.2版本连不上oracle数据库 当系统安装 ...
相关推荐
Oracle中的`WITH CHECK OPTION`是视图创建时的一个重要特性,用于限制对视图的数据修改操作,确保修改后的数据仍然符合视图的定义条件。这个选项使得视图不仅仅是查询的工具,也成为了一种数据安全控制手段,防止...
综上所述,Oracle创建视图是一种强大的数据库管理工具,它能够提高数据管理的效率,简化复杂查询,并提供数据访问的安全性。理解和掌握视图的创建和使用是每个Oracle数据库管理员和开发人员必备的技能之一。
ORA-01402:视图WITH CHECK OPTION 违反WHERE 子句 视图的删除:DROP VIEW VIEW_NAME语句删除视图。 删除视图的定义不影响基表中的数据。 只有视图所有者和具备DROP VIEW权限的用户可以删除视图。 视图被删除...
2. 在没有 WITH CHECK OPTION 和 WITH READ ONLY 时,视图可以进行Insert、Update 和 Delete 操作。 在 Oracle 中,还有一种视图:物化视图(MATERIALIZED VIEW),也称实体化视图,快照(8i 以前的说法),它是...
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名[(别名 1[,别名2...])] AS 子查询 [WITH CHECK OPTION [CONSTRAINT 约束名]] [WITH READ ONLY] 其中: * OR REPLACE 表示替代已经存在的视图。 * FORCE 表示不管...
其中,`OR REPLACE`允许更新已存在的视图,`FORCE`和`NOFORCE`控制基表是否存在时创建视图,`subquery`是定义视图的数据源,`WITH READ ONLY`表示视图为只读,`WITH CHECK OPTION`则在插入或更新时检查新数据是否...
然而,如果视图没有这些限制,并且使用了`WITH CHECK OPTION`,那么插入或更新的数据必须满足视图的查询条件。 例如,创建一个包含出版社名称的复杂视图: ```sql CREATE OR REPLACE VIEW 图书作者出版社(书名, ...
- 当使用`WITH CHECK OPTION`时,对于视图或子查询中的`WHERE`条件会持续检查。如果尝试插入的数据违反了`WHERE`条件,则插入操作会失败。 ```sql SQL> INSERT INTO (SELECT id FROM a WHERE id < 100 WITH CHECK...
- **WITH CHECK OPTION**:当创建视图时加上此选项,可以在更新视图时强制执行视图定义中的WHERE子句。 - **可更新的视图**:视图v3和v1是可完全更新的,因为它们包含了所有基表的列。而v2和v4因为进行了列选择或...
创建视图时,可以设置WITH CHECK OPTION来限制对基表的更新,只有符合视图条件的数据才能被修改。WITH READ ONLY则禁止在视图上执行INSERT、UPDATE和DELETE操作。视图可以简化复杂的查询,提供定制化的数据访问权限...
创建视图使用`CREATE VIEW`语句,可以嵌入子查询,并可选择是否启用`WITH CHECK OPTION`来限制对视图的更新操作,或者使用`WITH READ ONLY`来创建只读视图。 创建视图的语法如下: ```sql CREATE [OR REPLACE] ...
#### 创建视图 ```sql Create [or replace] view viewname [alias list] as subquery ``` - **Create view**: 创建或替换视图。 - **subquery**: 定义视图的查询语句。 ```sql [with check option [constraint ...
此题目考查了视图创建过程中`WITH CHECK OPTION`的作用以及聚合视图的限制。 ##### 3. 使用通配符和转义字符 **题目描述:** 题目要求从`SALES`表中筛选出`prod_id`字段包含特定字符串`'_D123'`的所有记录。 **...
创建视图的语法如下: ```sql CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]]; `...
接下来讨论的是创建视图时涉及到的WITH CHECK OPTION的问题。 1. **视图创建命令分析** - **视图v3** ```sql CREATE VIEW v3 AS SELECT * FROM SALES WHERE cust_id = 2034 WITH CHECK OPTION; ``` 这个...
如果视图定义中使用了`WITH CHECK OPTION`子句,则不能对该视图执行`INSERT`操作。 #### 码保留表与非码保留表 1. **码保留表**:在一个包含连接的视图中,如果某个表的主键被用作连接的关键字段,那么该表被称为码...
WITH CHECK OPTION确保通过视图插入或更新的数据必须满足视图定义中的条件。对于视图v1和v3,由于它们仅包含基本的列选择,并且没有聚合函数或GROUP BY子句,因此可以通过它们执行所有的DML操作。而对于v2,虽然它...
- 对于选项C,虽然也指定了WITH CHECK OPTION,但问题在于它只选择了部分列,而未包括所有列,这可能会导致在某些情况下无法执行DML操作,特别是如果未选择的列具有NOT NULL约束时。 - 对于选项D,其使用了聚合...
创建视图的语法是`create or replace view`,可以通过`with check option`来限制对视图的更新,但若视图包含不可更新的部分,则需要使用触发器进行操作。此外,视图还可以设置为只读,即`with read only`。 同义词...
从提供的文档片段中,我们可以看到创建视图的命令及选项,例如WITH CHECK OPTION,它用于在视图上强制实施约束。例如,创建视图的命令如“CREATE VIEW v3 AS SELECT * FROM SALES WHERE cust_id=2034 WITH CHECK ...