繁体   English   中英

审核跟踪触发器生成

[英]Audit Trail Trigger generation

正在使用Audit Trail系统,并决定使用带触发器的Shadow / History表进行处理。

关注了此审计跟踪文章并尝试使用CodeSmith Generator工具

我不明白它如何创建历史记录表和触发器。

有谁能理解它的工作原理并为我提供帮助。

我试图谷歌了解它。 但是没有明确的例子

我对以下内容一无所知

审核表如下所示

 CREATE TABLE [dbo].[<%= AuditTableName %>] (
    [ChangeLogID] [int] IDENTITY (1, 1)  ,
    [OperationType] [varchar] (10) NOT NULL ,
    [ChangeTimestamp] [datetime] NOT NULL ,
    [MadeBy] [varchar] (6)  NOT NULL ,
    [TableChanged] [varchar] (50)  NOT NULL 
 ) ON [PRIMARY]

明细表如下所示

 CREATE TABLE [dbo].[<%= AuditFieldTableName %>] (
    [FieldName] [varchar] (50) NOT NULL ,
    [ChangeLogID] [int] NOT NULL ,
    [BeforeValue] [sql_variant]  NOT NULL ,
    [AfterValue] [sql_variant] NOT NULL 
 ) ON [PRIMARY]

如何生成并添加触发器,如何插入AuditFieldTableName值?

由于我们在多个表中具有不同类型的列,因此您指定的审核表实际上不足以解决问题。 我建议使用以下审核表:

TABLE auditEntry (
    auditEntryId           INTEGER      PRIMARY KEY,
    operationType          VARCHAR(10)  NOT NULL,      -- For INSERT / UPDATE / DELETE
    changeTimestamp        DATETIME     NOT NULL,
    madeBy                 VARCHAR(50)  NOT NULL,
    tableName              VARCHAR(30)  not null,      -- stores the name of the table changed
    columnName             VARCHAR(30)  not null,      -- stores the name of column changed
    oldInt                 INTEGER,
    newInt                 INTEGER,
    oldVarchar             VARCHAR(100),
    newVarchar             VARCHAR(100),
    oldDate                DATETIME,
    newDate                DATETIME)

现在,如果您具备编写行级触发器的能力,可以在表上为INSERTUPDATEDELETE编写行级触发器,这对我来说是一条小路。 在MSDN上搜索如何编写这样的触发器,这样就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM