外部パラメーターを受け入れるトリガーを作成することはできますか?
履歴データを保存する際に、更新操作を行ったアプリケーション ユーザー名を保存したいと考えています。使用しようと思った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 サーバー 2012 を使用しています。方法を教えてください...