create table student3(
  sid number, sname varchar2(10), sage number  
)
create view stu_Age_view_vo(学生编号,姓名,年龄)
as
select sid,sname,sage+1 from student3 where sname='candy'
with check option;
insert into stu_Age_view_vo (学生编号,姓名)
values(6,'candy');
commit;
select * from student3;大家看我的执行sql,是在oracle10g里面。不是说视图不能修改吗,只有物化视图才能增删改吗,怎么普通的view也可以insert、update呢?

解决方案 »

  1.   

    视图是可以insert,update,delete的,不过多了一些操作原则
      

  2.   

    对于只从单表中查询数据的视图,是可以做修改的。相当于你对视图DML操作时,ORACLE帮你转换成对基表操作
      

  3.   

    oracle视图更新有限多限制,
    条件一:在连接视图中不能有Order by排序语句。
    条件二:基础表中所有的NOT NULL列都必须在这个视图中。
    条件三:需要更新的列不是虚拟列。
    条件四:不能够具有分组函数。
    ................如果非要更新,可以考虑替代(instead)触发器