oracle视图怎么做dml操作,最好举个例子
------解决方案--------------------
ChenZw> CREATE TABLE FOO(
2 USERNAME VARCHAR2(100)
3 )
4 ;
表已创建。
ChenZw> BEGIN
2 FOR I IN 0..10 LOOP
3 INSERT INTO FOO VALUES('Andy'
------解决方案--------------------
I);
4 END LOOP;
5 END
6 ;
7 /
PL/SQL 过程已成功完成。
ChenZw> CREATE VIEW V_FOO AS SELECT * FROM FOO;
视图已创建。
ChenZw> INSERT INTO V_FOO VALUES('ZIWEN');
已创建 1 行。
ChenZw> DELETE FROM V_FOO WHERE USERNAME = 'Andy1';
已删除 1 行。
ChenZw> UPDATE V_FOO SET USERNAME = 'ZIWEN' WHERE USERNAME ='Andy2';
已更新 1 行。
ChenZw> select * from v_foo;
USERNAME
----------------------------------------------------------------
Andy0
ZIWEN
Andy3
Andy4
Andy5
Andy6
Andy7
Andy8
Andy9
Andy10
ZIWEN
已选择11行。
ChenZw>
------解决方案--------------------
CREATE VIEW V_FOO AS SELECT * FROM FOO with read only
加上with read only后就只能查询了看,不能对数据做任何修改
------解决方案--------------------
视图分简单视图和复杂视图。
简单视图是可以进行DML操作。复杂视图有部分可以DML操作,若复杂视图中有分组函数、groupby字句、distinct、伪列等则不可以做DML操作。
有的视图上会加with check option和with read only约束。
with read only表明该视图不能进行DML操作。
with check option对于违反视图选择范围的数据行被插入,将受WITH CHECK OPTION检查
------解决方案--------------------
简单视图可以做DML操作,复杂视图无法做DML操作