一、对视图进行DML操作
1.创建一个视图v_test
create or replace view v_test
as select *from test where c_sec_code = '00939 HS'
2.向视图 v_test中进行insert操作
insert into v_test (c_sec_code,d_sett) values('00939 HS', date'2018-01-01')
ps:只能对简单的视图进行DML操作,复杂的视图是无法执行DML操作.
练习: 当前视图v_test数据
视图v_test的基表test,该表当前数据是:
对视图插入数据
此时查询视图,多了一行数据
查询基表,多了一行数据
练习: 当前视图v_test数据(加上with check option)
重新创建视图: create or replace view v_test
as select *from test where c_sec_code = '00939 HS' with check option
执行插入语句
with check option对数据进行校验,如果满足where条件,才允许插入,否则不允许插入.
练习(with read only)
创建视图
create or replace view v_test
as select *from test where c_sec_code = '00939 HS' with read only
执行插入语句:insert into v_test (c_sec_code,d_sett) values('00939 HS', date'2018-01-01'),会报错.因为视图在创建的时候要求只读。
由于视图可以是基于多个表的链接查询,所以,视图可以简化用户的查询,允许用户从多个表中检索数据而不需要知道基表是如何连接的。
视图可以有访问权限,但可以对基表没有访问权限,从而限制了数据库的访问。
简单的视图可以实现对基表的DML操作。
当视图执行DML操作时,同样受基于表上的约束的限制。