使用SqlServer 触发器记录审计信息

今天接到一个需求,要在某个业务表上增加一个记录创建时间的字段,用于事后分析。这实际上是审计信息记录的需求,不应该也没有必要修改业务数据库。采用触发器在插入记录时,同时写入审计信息更可靠也更容易维护。比如,需要记录表WorkFlow_Entity中每条记录的创建时间,可以新增表WorkFlow_EntityCreateTime:
创建脚本如下:

CREATE TABLE [dbo].[WorkFlow_EntityCreateTime](
    [WE_Id] [int] NOT NULL,
    [CreateDate] [datetime] NULL,
 CONSTRAINT [PK_dbo.WorkFlow_EntityCreateTime] PRIMARY KEY CLUSTERED 
(
    [WE_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

然后在WorkFlow_Entity表上创建插入触发器,在新记录插入时,将新记录的id和插入时间写入审计表:

CREATE TRIGGER [dbo].[WorkFlow_Entity_Insert_Trigger]
   ON  [dbo].[WorkFlow_Entity]
   AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;
    INSERT INTO WorkFlow_EntityCreateTime(
        WE_Id, 
        CreateDate
    )
    SELECT
        i.WE_Id,
        GETDATE()
    FROM
        inserted i

END

这样,新插入记录后,审计信息会记录到审计表中。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容