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

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


视图中使用DML的规定:

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


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

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

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

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

屏蔽 DML 操作:

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

Oracle 数据库中,视图是一个虚拟表,它是基于一个或多个表的查询结果构建而成。视图提供了一种逻辑上的数据展示方式,可以简化复杂的查询和数据访问操作。在视图修改数据和直接在表上修改数据存在以下区别: 1. 数据源: - 直接在表上修改数据是对实际存储数据修改操作,会对表中的数据进行直接更。 - 在视图修改数据实际上是对基础表的数据进行修改,通过视图的定义和过滤条件来确定要修改的行。 2. 数据完整性: - 直接在表上修改数据需要遵循表的约束和触发器等数据完整性规则,确保数据的一致性和有效性。 - 在视图修改数据也需要满足相关的约束和触发器,但可能会受到视图定义和过滤条件的限制。 3. 访问权限: - 直接在表上修改数据可能需要相应的表级别的权限,用户必须具有足够的权限才能对表进行修改操作。 - 在视图修改数据可能需要对视图的权限,用户可以通过授予视图级别的权限来控制对特定列或行的访问和修改。 4. 数据更新: - 直接在表上修改数据会直接更新表中的数据,对其他用户可见。 - 在视图修改数据会根据视图的定义和过滤条件来更新基础表的数据,更新的结果可能会影响到其他使用该视图的用户。 需要注意的是,修改视图上的数据并不总是能够成功,因为视图可能由多个表组成,具有不同的约束和过滤条件。在修改视图上的数据时,数据库会尝试将修改操作映射到基础表上,如果存在冲突或不满足约束条件,修改操作可能会失败。因此,在进行数据修改操作时,需要仔细考虑使用直接在表上修改数据还是在视图修改数据的方式,并确保操作的正确性和一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值