我有一个trigger,它处理一些数据以进行记录,例如:

CREATE TRIGGER trgDataUpdated
   ON tblData FOR UPDATE
AS
BEGIN
    INSERT INTO tblLog ( ParentID, OldValue, NewValue, UserID )
    SELECT  deleted.ParentID, deleted.Value, inserted.Value,
            @intUserID -- how can I pass this in?
    FROM    inserted INNER JOIN deleted ON inserted.ID = deleted.ID
END


如何将变量@intUserID传递给上述触发器,如以下代码所示:

DECLARE @intUserID int
SET @intUserID = 10

UPDATE tblData
SET    Value = @x


PS:我知道我无法从字面上将@intUserID传递给触发器,它只是用于说明目的。

最佳答案

我将SET CONTEXT_INFO用于此类操作。这是2008年以来的链接,prior link已停用。

在SQL Server 2005+上,您必须使用CONTEXT_INFO进行读取,否则必须从context_infodbo.sysprocesses列中获取。

关于sql-server - 将变量传递给触发器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2646547/

10-09 18:22