我的webapp的主持人可以修改数据库中的一些数据.所有用户都可以看到这些修改.但出于某种原因,我不希望它们立即应用,而是仅在特定行动之后,例如,当我明确接受时.时间表是:
PreviousValue.NewValue.PreviousValue.NewValue.问题是版主可以修改大量表中的字段.处理这个临时值的最佳方法是什么?我可以想象这些解决方案,但没有一个听起来不错:
MyTable和MyTable_ToApply).ToApplyTable包含四个字段的特殊表():要修改的表,要修改的字段,要修改的条目的ID以及要应用的新值.你有更好的想法吗?
一旦问题相当广泛(并且可以有很多好的答案) - 这不是答案,而是另一种可能的解决方案:
你可以有这样的表:
id - just autogenerated number
datetime - date of change
changed_by - string with name of actor or id of some user
oldvalue - just old value
newvalue - just new value
update_insert_sql - here you put actual SQL which should be executed (you already have this sql in your current code)
state - 0 - it is not applied to db, 1 - already executed, 2 - you're rejected this change
datetime_of_apply - just date of action
datetime_of_reject - just date of action
Run Code Online (Sandbox Code Playgroud)
注意:您可以存储 SQL 来获取当前值,而不是存储旧值,这将在不同审核者对同一行/列进行多次更改时为您提供帮助
因此,在您的界面中,您将能够看到对所有表的所有建议更改,仅查看实际值和建议的新值,并在需要时更新数据库
可能的补充:要填充此表,您可以使用触发器,而不是更改当前代码