创建触发器以了解谁在 SQL Server 表中进行了更改

Posted

技术标签:

【中文标题】创建触发器以了解谁在 SQL Server 表中进行了更改【英文标题】:Create trigger to know who made changes in SQL Server table 【发布时间】:2013-03-26 11:40:14 【问题描述】:

我有一张表Products 和第二张Products_audit 两列UserDate

能否请您协助我为表Products 编写触发器来处理此要求:

当有人要修改Products中的数据时,我需要触发器将UserDate插入Products_audit中,获取当前修改数据的用户名和该操作发生的当前日期.

感谢任何帮助。

【问题讨论】:

你有什么尝试...谷歌“插入后触发”,你会发现很多信息。 目前什么都没有,我想知道那个触发器的大致结构 【参考方案1】:

试试这个:

CREATE TRIGGER [Trigger_name] ON  [DBO].[Products] 
   AFTER UPDATE, INSERT
AS 
BEGIN
    SET NOCOUNT ON;
    INSERT INTO ProductsAudit
    SELECT suser_sname(),getdate() FROM inserted
END

【讨论】:

您好,非常感谢您的帮助。我尝试了以下操作:CREATE TRIGGER Super1 ON Products AFTER UPDATE, INSERT AS BEGIN SET NOCOUNT ON; INSERT INTO Products_audit (Date, [User]) SELECT suser_sname(),getdate() FROM Products END 请您看看并纠正我的错误,因为尝试在表产品中插入数据时收到错误:从字符串转换日期时间的语法错误。 看起来你已经交换了日期和用户字段。

以上是关于创建触发器以了解谁在 SQL Server 表中进行了更改的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server - 在模式中触发AFTER INSERT表

创建TRIGGER以插入,更新和删除使用视图 - SQL SERVER

SQL Server 删除触发器以更新同一表中的多个列

如何为SQL Server数据库中的所有表创建触发器

在 SQL Server 2008 R2 中为每个表创建创建触发器

sql插入的操作