CREATE proc shujuzhuanhuan
as
set xact_abort on
begin tran
--首先处理A表地址更新过的B表记录
update B set baddress=a.aaddress
from B join A on a.ano=b.bno
where a.aaddress<>b.baddress
--将A表新增的记录插入到B表中
insert B(bno,bname,baddress,bbuilding)
select ano,aname,aaddress,''
from A
where not exists(
select 1 from B where bno=a.ano)
--更新 B表 bbuilding 字段
update B set bbuilding=c.building
from B
join C on charindex(RTRIM(c.building),b.baddress)>0
commit tran
GO
还是用触发器吧, 这样你就不用费太多心思在修改数据时调用存储过程。用触发器很简单,不会我教你。
1、为A表增建一个update触发器,这触发器的触发条件是发生在A表的address列上
触发器内容为:
if updated(address)
update b set building=a.address+'和'+c.building
from inserted as a inner join c
on charindex(RTRIM(c.building),a.baddress)>0
where bno=a.ano
2、至于insert触发器要更简单,调不通再与我联系。