日期:2014-05-17  浏览次数:20892 次

oracle视图怎么做dml操作
oracle视图怎么做dml操作,最好举个例子

------解决方案--------------------
引用:
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操作