c# - 如何记录系统用户所做的更改?

标签 c# asp.net sql-server logging

我有一个系统(c#/asp.net/sqlserver),用户可以登录并管理商店的产品。我需要登录数据库用户对产品所做的每项更改。例如:

Product A
Inserted by USER1 on 10/03/2013 10:00
Description changed to "Product AA" by USER2 on on 10/03/2013 12:00

实际上,我有一个与 PRODUCT 表类似的 PRODUCT_LOG 表,每次更改 PRODUCT 上的某些记录时,该记录都会插入到 PRODUCT_LOG 中。通过这种方式,我可以将“可读”日志返回给系统管理员(如上所示)。

但是,我在维护日志上的 FK 方面遇到了一个大问题,在记录一段时间后,许多寄存器不会从系统中删除,因为它们在日志表上被引用为 FK。 :(

我会问是否有其他选项或更好的方法来生成此类日志。 如果您知道这些方法的名称,请告诉我,以便我可以通过 Google 搜索到它。

最佳答案

去掉FK约束,就可以了。您想要的被称为“审核表”,它们不需要引用完整性,因为它们应该是不可变的,一次写入且永久的,因此将它们包含在 JOIN 中是没有意义的其他表。

关于c# - 如何记录系统用户所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171447/

相关文章:

sql - SQL Server 中的 pivot varchar 列?

json - 我可以使用 FOR JSON 添加嵌套根节点吗?

c# - 将数据库中的值显示到文本框

c# - 渲染前取消转义字符串中的转义字符

c# - 覆盖方法时,我的自定义代码应该出现在 super(base) 之前还是之后

c# - 为什么我似乎不能为常量字段赋值?

c# - WPF 保持键盘焦点

c# - 如何使用 C# 以编程方式向标题控件链接添加事件样式?

javascript - 拦截按钮回发的最佳方式

c# - 对使用 Assembly 的方法进行单元测试