0

監査証跡システムに取り組んでいて、トリガー付きのシャドウ/履歴テーブルでそれを行うことにしました。

この監査証跡記事に従い、 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 値を挿入するにはどうすればよいですか?

4

1 に答える 1

0

複数のテーブルにさまざまな種類の列があるため、指定した監査テーブルでは十分ではありません。次の監査テーブルをお勧めします。

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)

INSERT行レベルのトリガーを、UPDATEおよびDELETEテーブルに記述することは、それらを記述する実用的な知識があれば、簡単なことだと思います。このようなトリガーの書き方については、MSDN を検索してください。

于 2013-10-21T12:10:50.260 に答える