视图(view)update问题

本文探讨了数据库中视图更新的条件及限制,包括视图的构成要素如何影响其可更新性,例如伪列的存在会阻止视图更新。此外,还讨论了多表关联视图的更新限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚我试了一下,简单的视图是能update的。的“视图有伪列的不能update,能映射到表上的可以update”
开始不理解,查了一下,这个意思是说视图的每个列能对应到实际表字段的列,此时视图时可以update的。
伪列包括常量表达式、rownum 等伪列、或者经过分组函数运算得到的,等等,都算是虚拟列。
而且,一般对视图的更新,只能对简单视图进程更新,而不能对多表关联形成的视图进程更新,这个我验证了一下,确实如此。
ETL@RACTEST> create view mxm_test01_v as select * from mxm_test01 a ,mxm_test02 b where a.sub_email = b.email;

View created.

Elapsed: 00:00:00.01
ETL@RACTEST>
ETL@RACTEST> update mxm_test01_v set sub_email  ='333' where sub_email = '222';
update mxm_test01_v set sub_email  ='333' where sub_email = '222'
                        *
ERROR at line 1:
ORA-01779: cannot modify a column which maps to a non key-preserved table

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值