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

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也更新。备注:不要把没有变动的也更新一遍,这样会影响性能。 是不是要写存储过程才可以实现?

需要实时变动用触发器
不实时变动用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
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-19
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
相似回答