oracle 如何根据一个表中记录的变动更新另外一个表中相应的字段

a表(id,name,telephone,zipcode,address),b表(id,name,telephone,zipcode,address,dept,money... a表(id,name,telephone,zipcode,address),b表(id,name,telephone,zipcode,address,dept,money) a表中ID与b表中ID是对应的,B表中的name,address....会变动;这时就需要让A表与B表的数据保持一致,只修改变动的记录,不用全表替换,不需要实时变动。
我的意思是B表中的name,address会变动,但是不是所有的都会变动,所以先要查询出变动的部分,然后再和A表比较,再把A表的name,address也更新。备注:不要把没有变动的也更新一遍,这样会影响性能。 是不是要写存储过程才可以实现?
展开
 我来答
badkano
推荐于2017-09-07 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885371
团长

向TA提问 私信TA
展开全部
需要实时变动用触发器
不实时变动用update

update a set a.name=(select b.name from b where a.id=b.id),a.adress=(select b.address from b where a.id=b.id)

------补充------
update a set a.name=(select b.name from b where a.id=b.id),a.adress=(select b.address from b where a.id=b.id) where a.name<>b.name or a.address<>b.address
Axure夜话
推荐于2017-09-19 · 知道合伙人软件行家
Axure夜话
知道合伙人软件行家
采纳数:1197 获赞数:1344
1992年毕业于太原理工大学,20年IT公司工作经验现任山西誉海和科技有限公司技术总监,老二牛车教育课程总监

向TA提问 私信TA
展开全部
oracle 如何根据一个表中记录的变动更新另外一个表中相应的字段
可以采取两种方式来实现: 子查询和视图的方式

1:子查询方式
参考代码

update stumarks
set stuname=
(
select stuinfo.stuname from stuname

where stumarks.stuno=stuinfo.stuno
)
2:视图方式
参考代码
update(
select a.stuname anme,b.stuname bname from stuinfo a
inner join stumarks b
ona.stuno=b.stuno

set bname=aname
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式