首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何跟踪对数据库的更改?

如何跟踪对数据库的更改?
EN

Stack Overflow用户
提问于 2012-06-29 22:14:28
回答 2查看 2.9K关注 0票数 1

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

数据库使用SQL Server2008MVC3,网站使用ASP.net C# MVC3。

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

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

我需要一些方向...有没有人有什么建议或教程,我可以用来学习如何实现一个过程,将跟踪用户对网站的数据所做的更改。

谢谢你的帮助/建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-29 22:35:24

您可以考虑SQL Server2008引入的两个新功能:Change TrackingChange Data Capture

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

但是,如果您需要应用更复杂的业务规则,那么在应用程序层而不是纯粹在数据库中应用可能会更好。

致以问候。

票数 3
EN

Stack Overflow用户

发布于 2012-06-29 23:08:15

我只需要创建两个触发器--一个用于更新,另一个用于插入。

这些触发器如下所示-假设您还希望在Mapping_Log表中记录操作(insert与update):

代码语言:javascript
运行
复制
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表中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11263409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档