要看视图是如何构成的,基于单个表的视图从视图中可删除相应表的数据。 如果视图由多个表构成,对视图进行数据操作就可能出现错误,如: ORA-01732: data manipulation operation not legal on this view 这种情况一般可通过替代触发器来完成对表的数据操作。如: create or replace trigger mytrig instead of insert on viewname declare ...... begin ...... end; /
如果是多表查询,事实上你用到了连接,从视图中删数据并不是所有数据都可以成功。如果你要删的数据仅来自key-preserved table ,那就恭喜你,可以直接删掉了,如果不是,就想其他办法吧。总之,对在多表查询基础上建立的视图进行DML是一个很严格的过程,那些苛刻的条件恐怕无法满足你的要求。Have a good day.
as
select id from tablename;
view中的记录删除了,实际上就是在相应的表中删除记录,不需要建触发器去删除表中的记录,而且这样的操作也是错误的
如果视图由多个表构成,对视图进行数据操作就可能出现错误,如:
ORA-01732: data manipulation operation not legal on this view
这种情况一般可通过替代触发器来完成对表的数据操作。如:
create or replace trigger mytrig
instead of insert on viewname
declare
......
begin
......
end;
/
我做了一个多表查询的视图,从视图里删一行的时候用instead of触发器删除表中的数据,这样应该可以的吧