1

这是场景。

我正在根据来自不同表的连接条件更新表中的多个记录。我想在有更新时执行 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),或者当行有更新时是否有任何其他方式来执行其他存储过程。

4

1 回答 1

2

更新是基于集合的操作,因此最好不要遍历记录并为每条记录调用 SP,因为那样效率极低。

更好的选择可能是在表上的触发器中的“AddQuickEvent”中执行您尝试执行的任何操作,并对更新的记录集进行操作。

在 SQL 中操作时,考虑集合操作而不是单独循环和处理每条记录几乎总是更好。

于 2017-01-27T16:38:41.930 回答