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>

解决方案 »

  1.   

    CREATE VIEW V_FOO AS SELECT * FROM FOO  with read only
    加上with read only后就只能查询了看,不能对数据做任何修改
      

  2.   

    视图分简单视图和复杂视图。
    简单视图是可以进行DML操作。复杂视图有部分可以DML操作,若复杂视图中有分组函数、groupby字句、distinct、伪列等则不可以做DML操作。
    有的视图上会加with check option和with read only约束。
    with read only表明该视图不能进行DML操作。
    with check option对于违反视图选择范围的数据行被插入,将受WITH CHECK OPTION检查
      

  3.   

    简单视图可以做DML操作,复杂视图无法做DML操作