我已经编写了一个存储过程,我想在行更新时调用。
可以是这样的:
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
这工作得很好-但只是一个单一的行。我如何重写它来执行多行更新?我想在这样的触发器中使用游标并不是一个好方法。
谢谢!
有两个选项:
1)在while循环中处理数据-从插入的表中获取数据,并执行SP X次-每行一次。
2)重写SP(或创建一个新的SP),接受table作为输入参数。如果可能的话,一次处理所有行。取决于SP的代码。因此,在触发器中,您执行该SP并传递一些预定义的表,该表基于插入的表