这是正确的做法吗?有什么建议可以让它更好吗?
tl_name和dept字段可能会更改,目前正在使用影子表跟踪所有更改。is_active字段将被设置为false,并且一旦得到管理员的批准,它将被更新为true。

发布于 2017-04-11 09:35:23
据我所知,您的要求如下:
我想你失踪了:
is_active = False和(显然)错误的数据。这可以通过您的审计表设计来完成。找到这个emp PK的最新批准条目,并使用它的数据。
但是,如果将来审计的列数可能会发生变化,您可能会考虑使用两个表的方法,如本项目中的https://autoaudit.codeplex.com/documentation。
AuditHeader表 每次在为使用AutoAudit系统而设置的表中插入、更新或删除一条记录时,都会插入该表一行。 AuditDetail表 此表与AuditHeader相关,并为在插入或更新操作期间更改的每列插入一行,并在删除操作期间为每列插入一行。
如果每次更改都保存旧的+新值,则只需从当前的审核项恢复到“旧”状态。
主表的结构更改(或者如果您决定用户也可以编辑emp_name )不需要对审核表进行结构更改,因为Main中的每个已审计列都映射到AuditDetails中的一行,而不是列。
编辑:额外优势:
在示例数据中,您已将更改的值标记为红色。显然,Access表不是那样工作的。如果要保留此信息(“确切编辑了哪一列?”),则需要在“审核”表中添加一列。
这将由AuditDetail来处理,因为它包含具有旧+新值的每个更改。
https://stackoverflow.com/questions/43256809
复制相似问题