oracle数据库中,创建了一个视图a 视图中有个b表中的ID ,现在要删除视图中的一条记录 与b表中ID相关联的有另外c,d,e,f,g,h,i。麻烦各位大虾帮忙,小弟是头一次用oracle不懂的地方还得靠大家多多帮助。

解决方案 »

  1.   

    delete a  x
    where exists
    (select 1 from b y where x.id=y.id)
    and x.id is not null;
      

  2.   

    可以删除数据,这是我测试的语句
    create table tb(id int)insert into tb
    select 1 from dualselect * from tbcreate view tbview
    as
    select * from tbselect * from tbviewdelete from tbview 
      

  3.   


    i. 如果某些视图查询执行如下任务一个操作,或者包含如下任何结构,则视图就不能   被UPDATE、INSERT或者DELETE 语句修改:
    1) 集合操作,如UNION、UNION ALL、INTERSECT和MINUS.
    2) 分组函数,如AVG、COUNT、MAX、MIN和SUM
    3) GROUP BY 或者HAVING 语句。
    4) CONNECT BY 或者START WITH 语句。
    5) DISTINCT 操作符。
    6) ROWNUM伪列。
    如果要对其进行update 、insert和delete操作就必须使用INSTEAD OF 触发器   在触发器内部直接删除底层数据