创建触发器以了解谁在 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
两列User
和Date
。
能否请您协助我为表Products
编写触发器来处理此要求:
当有人要修改Products
中的数据时,我需要触发器将User
和Date
插入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