我正在创建一个网站,将由会计部门使用。跟踪不同项目的预算支出。
数据库使用SQL Server2008MVC3,网站使用ASP.net C# MVC3。
我的老板要求我做的是,每当任何用户更新或创建项目时,我们都需要将更改记录到一个名为Mapping_log
的新表中。它应该记录正在保存或创建的整个Mapping
行,以及用户和日期戳。注释字段现在将是必填字段,并且注释应保存到Mapping_log
。
现在,当编辑PA时,Notes字段将始终为空,并且在其下方,它应该有一个按日期组织的旧注释列表。我一直在寻找使用Nlog和Log4net的可能性,但我还没有找到像我这样的情况下的好教程。似乎这些模块主要用于错误日志记录,尽管这很重要,但这并不是我目前正在尝试做的事情。
我需要一些方向...有没有人有什么建议或教程,我可以用来学习如何实现一个过程,将跟踪用户对网站的数据所做的更改。
谢谢你的帮助/建议!
发布于 2012-06-29 22:35:24
您可以考虑SQL Server2008引入的两个新功能:Change Tracking和Change Data Capture。
您可以使用它并避免使用自定义的Mapping_log
表。
但是,如果您需要应用更复杂的业务规则,那么在应用程序层而不是纯粹在数据库中应用可能会更好。
致以问候。
发布于 2012-06-29 23:08:15
我只需要创建两个触发器--一个用于更新,另一个用于插入。
这些触发器如下所示-假设您还希望在Mapping_Log
表中记录操作(insert与update):
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
(您的更新触发器将非常相似-只要将“插入”替换为“更新”,它出现的地方)
这是在“幕后”为您完成的-一旦就位,您不再需要做任何事情就可以将这些操作“记录”到Mapping_Log
表中。
https://stackoverflow.com/questions/11263409
复制相似问题