create trigger mytr on table2 for insert,update,delete as
update table2
set val = b.val
from (select pro,val=sum(val) from
(select pro,val
from table1 where pro in(select pro from deleted union
select pro from inserted)
union all
select pro,val from inserted
union all
select pro,-val from deleted) as tmp
group by pro
) as b
update table2
set val = b.val
from (select pro,val=sum(val) from
(select pro,val
from table1 where pro in(select pro from deleted union
select pro from inserted)
union all
select pro,val from inserted
union all
select pro,-val from deleted) as tmp
group by pro
) as b
update table2
set val = b.val
from (select pro,val=sum(val) from
(select pro,val
from table1 where pro in(select pro from deleted union
select pro from inserted)
union all
select pro,val from inserted
union all
select pro,-val from deleted) as tmp
group by pro
) as b
where table2.val = b.val
update table2
set val = table2.val + b.val
from (select pro,val=sum(val) from
(select pro,val from inserted
union all
select pro,-val from deleted) as tmp
group by pro
) as b
where table2.val = b.val但没有考虑插入新val值的情况。