视图可以修改数据么?有的改就能改。

我的印象一直以为是不可以修改,查了查,原来在一定的前提下,是可以的,无论是单个表还是多表关联,只要能区分映射‘实体’,否则,可以使用触发器。

视图中使用DML的规定:

l可以在简单视图中执行DML 操作 l可以在简单视图中执行DML 操作
l当视图定义中包含以下元素之一时不能使用delete: l当视图定义中包含以下元素之一时不能使用delete:
•组函数 •组函数
•GROUPBY子句 •GROUPBY子句
•DISTINCT 关键字 •DISTINCT 关键字
ROWNUM 伪列

当视图定义中包含以下元素之一时不能使用update :

l组函数 l组函数
lGROUP BY子句 lGROUP BY子句
lDISTINCT 关键字 lDISTINCT 关键字
lROWNUM 伪列 lROWNUM 伪列
l列的定义为表达式 l列的定义为表达式

当视图定义中包含以下元素之一时不能使用insert :

l组函数 l组函数
lGROUP BY 子句 lGROUP BY 子句
lDISTINCT 关键字 lDISTINCT 关键字
lROWNUM 伪列 lROWNUM 伪列
l列的定义为表达式 l列的定义为表达式
l表中非空的列在视图定义中未包括 l表中非空的列在视图定义中未包括

屏蔽 DML 操作:

l可以使用WITH READ ONLY 选项屏蔽对视图的DML 操作 l可以使用WITH READ ONLY 选项屏蔽对视图的DML 操作
l任何DML 操作都会返回一个Oracle server 错误 l任何DML 操作都会返回一个Oracle server 错误

经验分享 程序员 微信小程序 职场和发展