oracle视图的DML操作

来源:互联网 发布:matlab 数组截断 编辑:程序博客网 时间:2024/05/17 09:35

    Q:视图上只能 查询,不能增、删、改? A:no

    部分视图上是可以执行DML操作,但是必须遵循一定原则,如下

    1.在简单视图上可以DML

    简单视图:只从一个表获取数据;不包含函数和数组。

    2.如果视图中包含以下内容则不能删除数据行

        a.group函数

        b.group by子句

        c.distinct关键字

    3.可以通过视图修改基表中数据,只要试图中不出现以下情况

        视图中包含group函数,group by子句,distinct 关键字

        使用表达式定义的列

        rownum伪列

    4.可以通过视图向基表中插入数据,只要视图中不出现以下情况

        视图中包含group函数,group by子句,distinct 关键字

        使用表达式定义的列

        rownum伪列

        基表中未在视图中选择的其他列定义为非空并且没有默认值

如果不想在视图上执行DML操作,只要在创建视图的时候加上with read only