以下是该方案。
我正在根据来自不同表的连接条件更新表中的多个记录。我希望在有更新时执行SP。这是我用于更新的SQL。
Update ep
Set ep.AddressEMail = mail
FROM SampleTable Samp
Inner Join Emp ec
On ec.EecEmpNo = Samp.employeeid
Inner Join Emp ep
on ep.EEID = ec.EecEEID
Where ep.AddressEMail <> mail
我想为每次发生的更新调用以下SP。
EXEC dbo.AddQuickEvent
我是否必须更改上面的SQL以循环遍历每条记录并执行所需的SP(exec dbo.AddQuickEvent),或者在对行进行更新时执行其他存储过程还有其他方法。
答案 0 :(得分:2)
更新是基于集合的操作,因此最好不要循环记录并为每条记录调用SP,因为这样效率非常低。
更好的选择可能是在表中的触发器中执行“AddQuickEvent”中的任何操作,并对更新的记录集进行操作。
在SQL中运行时,从集合操作的角度思考而不是单独循环和处理每条记录几乎总是更好。