1

私は経理部が使用するウェブサイトを作成しています。さまざまなプロジェクトによる予算支出を追跡します。

データベースにはSQLServer2008 R2を使用し、WebサイトにはASP.net C#MVC3を使用しています。

上司から依頼されたのは、ユーザーがプロジェクトを更新または作成するたびに、その変更を。という新しいテーブルに記録する必要があるということMapping_logです。保存または作成されている行全体Mapping、さらにユーザーと日付スタンプを記録する必要があります。メモフィールドは必須になり、メモはに保存する必要がありMapping_logます。

これで、PAを編集するとき、[メモ]フィールドは常に空になり、その下には、日付別に整理された古いメモのリストが表示されます。私はおそらくNlogとLog4netの使用を検討してきましたが、私のような状況に適したチュートリアルを見つけることができませんでした。これらのモジュールは主にエラーロギングに使用されているようですが、これは重要ではありますが、現時点で私がやろうとしていることとは異なります。

方向性が必要です...サイトのユーザーがデータに加えた変更を追跡するプロセスを実装する方法を学ぶために使用できるアドバイスやチュートリアルはありますか。

あなたの助け/アドバイスをありがとう!

4

2 に答える 2

3

SQLServer2008で導入された2つの新機能である変更の追跡変更のデータキャプチャを検討できます。

これを使用して、カスタムMapping_logテーブルを回避できます。

ただし、より複雑なビジネスルールを適用する必要がある場合は、純粋にデータベースではなく、アプリケーション層で適用する方がよいでしょう。

よろしく。

于 2012-06-29T14:35:24.490 に答える
1

2つのトリガーを作成します。1つは更新用、もう1つは挿入用です。

これらのトリガーは次のようになります。テーブルに操作(挿入と更新)も記録する場合は、次のようになります。Mapping_Log

CREATE TRIGGER trg_Mapping_Insert
ON dbo.Mapping
AFTER INSERT
AS
   INSERT INTO dbo.Mapping_Log(col1, col2, ..., colN, User, DateStamp, Operation)
      SELECT 
         col1, col2, ..., colN, SUSER_NAME(), GETDATE(), 'INSERT'
      FROM
         Inserted 

UPDATEトリガーは非常に似ています-表示される場所で「挿入」を「更新」に置き換えるだけです

これは「舞台裏」で行われます。一度配置すると、これらの操作をテーブルに「記録」するために何もする必要がなくなりMapping_Logます。

于 2012-06-29T15:08:14.990 に答える