0
私はトリガーを作成しましたが、誰がレコードの削除を行ったかを知る方法があるかどうか疑問に思っていましたか?トリガーは削除されました..誰が削除されましたか?
トリガーまたはUSER_NAME()またはUSERでもSUSER_NAME()を使用すると、SQLログインIDのみを取得しています。トリガーは、私たちがカスタマイズできる.netバックエンドを持つ別のソフトウェアから起動されています。
USE JM_SB
GO
ALTER TRIGGER Sales_Update
ON Sales
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Action VARCHAR(30)
DECLARE @UNAME VARCHAR(30)
IF UPDATE(PartGroupID)
BEGIN
SET @Action = 'Updated Part Group'
/* All this does is get dbo */
Set @UNAME = (Select USER From Deleted)
INSERT INTO Sales_AuditTrail(Action, SalesID, OldValue,
NewValue, SalesDivision, UpdateDate, UpdatedUser)
SELECT @Action, i.SalesID, d.PartGroupID, i.PartGroupID,
i.SalesDivision, Current_Timestamp As UpdateDate, @UNAME
FROM Inserted i
INNER JOIN Deleted d ON i.SalesID = d.SalesID
END
END;
GO
削除または挿入された表には、レコードを更新した人が分かりますか? dboやsaの代わりに、更新をトリガーするソフトウェアから私のユーザー名は「jmadmin」
私はそれを疑います。データベースは、誰がデータベースにログインしているかを追跡します。ソフトウェアシステム自体が個々のユーザーを追跡している可能性があります。 –
私はそれがロングショットになると感じました。おそらく笑を期待していた – mrmcg
また、これはあなたが思うものをかなりしないかもしれません。列がudpate文の一部である場合、UPDATE関数は真と評価されます。挿入された値と削除された値が異なるかどうかは評価されません。私はおそらくUPDATE関数をスキップし、i.PartGroupID <> d.PartGroupIDを挿入のための述語としてインクルードします。 –