是否可以编写一个接受外部参数的触发器?
在存储历史数据时,我想存储完成更新操作的应用程序用户名。我想使用User_Name()
但后来知道,它只返回数据库用户,而不是应用程序用户。
因此,我正在寻找一些关于使用外部参数创建触发器的建议,以便我可以将应用程序用户的 id 传递给此触发器。认为我已经清楚地解释了我的需求。提前致谢 !
这是我尝试过的代码....
ALTER TRIGGER [dbo].[Audit]
ON [dbo].[MIS_Opus] FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @d DATETIME = GETDATE(), @u SYSNAME = SUSER_SNAME();
Insert into dbo.MIS_OpusAuditTrigger
(
OpusId, Category, ProcessName, DOP, RampupCode, _Count, TimeTaken, Remarks, Audit_Action, Audit_Timestamp, Changed_By
)
SELECT
OpusId,
Category,
ProcessName,
DOP,
RampupCode,
_Count,
TimeTaken,
Remarks,
'before update',
@d,
@u
FROM deleted -- <--- ****** deleted ******
UNION ALL
SELECT
OpusId,
Category,
ProcessName,
DOP,
RampupCode,
_Count,
TimeTaken,
Remarks,
'After update',
@d,
@u
FROM inserted;
END
在上面的代码中,只存储了数据库用户 ID,我需要存储执行更新操作的用户 ID。我正在使用 MSSQL server 2012 请告诉我该怎么做...