一、对视图进行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操作时,同样受基于表上的约束的限制。

本文探讨了在数据库中对视图进行DML操作的方法和限制,包括创建视图、向视图插入数据的过程,以及WITH CHECK OPTION和WITH READONLY选项的影响。通过实例展示了如何在视图上执行DML操作,并解释了这些操作背后的原理。
856

被折叠的 条评论
为什么被折叠?



