1

我正在创建一个会计部门将使用的网站。跟踪不同项目的预算支出。

我将 SQL Server 2008 R2 用于数据库,将 ASP.net C# MVC 3 用于网站。

我的老板要求我做的是每次任何用户更新或创建项目时,我们都需要将更改记录到一个名为Mapping_log. 它应该记录正在保存或创建的整Mapping行,以及用户和日期戳。备注字段现在是必填字段,备注应保存到Mapping_log.

现在在编辑 PA 时,Notes 字段将始终为空,并且在其下方,它应该有一个按日期组织的旧笔记列表。我一直在研究可能使用 Nlog 和 Log4net,但我找不到任何适合我这种情况的好的教程。似乎这些模块主要用于错误日志记录,尽管这很重要,但并不是我目前正在尝试做的事情。

我需要一些指导...有没有人有任何建议或教程可以用来学习如何实施一个流程来跟踪网站用户对数据所做的更改。

感谢您的帮助/建议!

4

2 回答 2

3

您可以考虑 SQL Server 2008 引入的两个新功能:更改跟踪更改数据捕获

您可以使用它并避免使用自定义Mapping_log表。

但是,如果您需要应用更复杂的业务规则,也许在应用层而不是纯粹在数据库中这样做会更好。

问候。

于 2012-06-29T14:35:24.490 回答
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 回答