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