【发布时间】:2016-10-19 21:04:28
【问题描述】:
我想在我的表上自动设置审核字段 (UpdatedBy/UpdatedOn)。为此,我在每个表上都有一个触发器,如下所示:
CREATE TRIGGER [dbo].[tr_AsyncMessage_Upd] ON [dbo].[AsyncMessage] AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE m
SET
m.UpdatedOn = CURRENT_TIMESTAMP
,m.UpdatedBy = SUSER_SNAME()
FROM dbo.AsyncMessage m
INNER JOIN inserted AS i
ON m.AsyncMessageID = i.AsyncMessageID
END
但是,我宁愿不必为每个表都编写触发器。有没有办法告诉 SQL Server 为我自动设置它们?或者有没有办法让一个触发器覆盖所有表?
【问题讨论】:
-
没有内置任何东西。不过,您可以通过编程方式生成所需的语句。
-
您可以使用动态sql为多个表设置相同的触发器
-
每个用户都使用不同的用户名吗?您使用的是 Win-Auth 还是 SQL Server 用户?
-
@FLICKER 我正在使用 SQL Server。是的,每个用户都有不同的用户名。
-
@tungula 如何获得涵盖多个表的触发器?
标签: sql sql-server audit sql-server-2016