0
我创建了一个触发,我想知道的,如果有一种方法来找出谁做了记录的删除?触发器从删除选择..找到谁删除?
当我使用SUSER_NAME()在触发或者USER_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函数的计算结果为true。它不评估插入和删除的值是否不同。我可能会跳过UPDATE函数并将i.PartGroupID <> d.PartGroupID作为插入的Where谓词。 –