Oracle中关于通过联结视图修改基表的问题
答案:1 悬赏:0 手机版
解决时间 2021-02-19 13:48
- 提问者网友:一抹荒凉废墟
- 2021-02-18 22:05
Oracle中关于通过联结视图修改基表的问题
最佳答案
- 五星知识达人网友:十年萤火照君眠
- 2021-02-18 22:21
你对key_preserved table理解有误
什么是键值保存表?
如果基表的每条记录在视图结果中最多出现1次(或者不出现,即不会重复),那么该基表就是键值保存表。
继续用你的脚本
INSERT INTO test2 VALUES(2,3.9);
这时select * from test_view3 where col1=2,返回如下两条数据
2,1.2,2.2
2,1.2,3.9
其中test2才是key_preserved table。所以只能修改col3字段
可以试想,如果执行UPDATE test_view3 a SET col2 = 1.3 WHERe a.col3 = 2.2;这样的语句成功
基表test2中col2被修改,那 视图中2,1.2,3.9这条数据如何显示,update语句没有修改col3=3.9的数据,但是这条数据中col2已经被修改。
所以只能修改key_preserved table
什么是键值保存表?
如果基表的每条记录在视图结果中最多出现1次(或者不出现,即不会重复),那么该基表就是键值保存表。
继续用你的脚本
INSERT INTO test2 VALUES(2,3.9);
这时select * from test_view3 where col1=2,返回如下两条数据
2,1.2,2.2
2,1.2,3.9
其中test2才是key_preserved table。所以只能修改col3字段
可以试想,如果执行UPDATE test_view3 a SET col2 = 1.3 WHERe a.col3 = 2.2;这样的语句成功
基表test2中col2被修改,那 视图中2,1.2,3.9这条数据如何显示,update语句没有修改col3=3.9的数据,但是这条数据中col2已经被修改。
所以只能修改key_preserved table
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯