欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle简单视图read only、check option和默认权限的异同(相对于DML语句)

程序员文章站 2022-07-12 22:30:14
...


视图分为俩类:
简单视图:
  视图所代表的sql中如果没有group by语句,
  没有组函数,查询的只有一张表,那么这样的视图就是简单视图.
复杂视图
  视图所代表的sql中如果有group by语句,
  或者有组函数,或者查询的是多张表,那么这样的视图就是复杂视图.

s_emp表格属性

oracle简单视图read only、check option和默认权限的异同(相对于DML语句)

默认权限

create view  DefaultAut
as 
select * 
from s_emp 
where dept_id = '41';
1.可以插入不满足where条件的数据,原表也会更改
 insert into defaultaut(id,last_name,dept_id) values(201,'tom201',41);
 insert into defaultaut(id,last_name,dept_id) values(202,'tom202',43);
2.不可以更新不满足where条件的数据,不会报错,只会显示更新0条数据
update  defaultaut set last_name='tommmm' where id = 202;
已更新0行。
update  defaultaut set last_name='tommmm' where id = 201;
已更新 1 行。
3.不可以删除不满足where条件的数据,不会报错,只会显示更新0条数据
delete from defaultaut where id = 202;
已删除0行。
delete from defaultaut where id = 201;
已删除 1 行。
查询语句
 select id ,last_name,dept_id from defaultaut;
 select id ,last_name,dept_id from s_emp where id >200;

read only权限

create view  ReadOnlyAut
as 
select * 
from s_emp 
where dept_id = '41'
with read only;

不可以进行任何插入、更新、删除操作,只能查询,会报错
insert into readonlyaut(id,last_name,dept_id) values(301,'tom301',41);
update readonlyaut set id = 5 where id  = 201;
delete from ReadOnlyaut where id = 201;
ORA-01733: 此处不允许虚拟列

check option权限

create view  CheckOptionAut
as 
select * 
from s_emp 
where dept_id = '41'
with check option;
特点:通过视图进行的修改 那么也必须可以通过这个视图能够显示出来,要不然就操作失败

1.满足where条件的数据可以插入,不满足的会报错
insert into checkoptionaut(id,last_name,dept_id) values(401,'tom401',41);
已创建 1 行。
insert into checkoptionaut(id,last_name,dept_id) values(401,'tom401',42);
第 1 行出现错误:
ORA-01402: 视图 WITH CHECK OPTIDN where 子句违规
2.满足where条件的数据可以修改,不满足的不可以,显示的是更新0行,不会报错
update checkoptionaut set last_name='tommmmm' where id=401;
已更新 1 行。
update checkoptionaut set last_name='tommmmm' where id=4;
已更新0行。
3.满足where条件的数据可以删除,不满足的不可以,显示的是删除0行,不会报错
SQL> delete from checkoptionaut where id = 401;

已删除 1 行。

SQL> delete from checkoptionaut where id = 1;

已删除0行。

相同之处

1.改变原表的数据,视图的数据也随之改变
2.只会显示满足条件的数据
3.对简单视图的修改会改变原表

相关标签: 简单视图