我已经写了一个存储过程,我想在行更新时调用它。
它可能看起来像这样:
Create PROCEDURE [TraceChange]
@Id uniqueidentifier,
AS
BEGIN
/*do some inserts, updates, etc*/
END
现在,我为表创建一个触发器,该触发器对于单行更新工作良好:
Create TRIGGER T1_TraceInsert
on T1
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
declare @id uniqueidentifier
exec TraceChange @id
END
这可以正常工作-但仅适用于单个Row。如何重写它以在多行更新上执行?AFAIK在此类触发器中使用游标不是一个好方法。
谢谢!
有两种选择:
1)在while循环中处理数据-从插入的表中获取数据,并执行SP X次-每行一次。
2)重写接受表作为输入参数的SP(或创建一个新SP)。如果可能,一次性处理所有行。取决于SP的代码。因此,在触发器中,您将执行该SP并传递一些基于插入表的预定义表
有关示例,请参见https://msdn.microsoft.com/zh-CN/library/bb510489.aspx。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句