вы не можете передать переменную в триггер.
единственный способ получить информацию в триггере - это иметь возможность ВЫБРАТЬ ее на основе таблиц INSERTED или DELETED или добавить столбец в соответствующую таблицу и поместить значение в этот столбец.
РЕДАКТИРОВАТЬ в предыдущем вопросе ОП, опубликованном по этому поводу, они сказали, что не хотят использовать CONTEXT_INFO, но здесь они говорят, что это нормально, поэтому вот пример использования CONTEXT_INFO:
в процедуре выполнения обновления
DECLARE @intUserID int
,@CONTEXT_INFO varbinary(128)
SET @intUserID = 10
SET @CONTEXT_INFO =cast('intUserID='+CONVERT(varchar(10),@intUserID)+REPLICATE(' ',128) as varbinary(128))
SET CONTEXT_INFO @CONTEXT_INFO
--do update that will fire the trigger
SET CONTEXT_INFO 0x0
вот часть триггера для получения значения:
DECLARE @intUserID int
,@sCONTEXT_INFO varchar(128)
SELECT @sCONTEXT_INFO=CAST(CONTEXT_INFO() AS VARCHAR) FROM master.dbo.SYSPROCESSES WHERE SPID=@@SPID
IF LEFT(@sCONTEXT_INFO,9)='intUserID'
BEGIN
SET @intUserID=RIGHT(RTRIM(@sCONTEXT_INFO),LEN(RTRIM(@sCONTEXT_INFO))-10)
END
ELSE
BEGIN
RAISERROR('intUserID was not specified',16,1)
ROLLBACK TRAN
RETURN
END
..use the @intUserID