如何保存修改以便以后申请?

Bla*_*ole 15 php database

我的webapp的主持人可以修改数据库中的一些数据.所有用户都可以看到这些修改.但出于某种原因,我不希望它们立即应用,而是仅在特定行动之后,例如,当我明确接受时.时间表是:

  1. 表中的字段具有值PreviousValue.
  2. 主持人请求此值NewValue.
    所有用户继续看到该值PreviousValue.
  3. 我接受这个改变.
    所有用户现在都可以看到该值NewValue.

问题是版主可以修改大量表中的字段.处理这个临时值的最佳方法是什么?我可以想象这些解决方案,但没有一个听起来不错:

  • 复制的所有表(具有一起MyTableMyTable_ToApply).
  • 添加一个ToApplyTable包含四个字段的特殊表():要修改的表,要修改的字段,要修改的条目的ID以及要应用的新值.

你有更好的想法吗?

Iły*_*sov 4

一旦问题相当广泛(并且可以有很多好的答案) - 这不是答案,而是另一种可能的解决方案:

你可以有这样的表:

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 来获取当前值,而不是存储旧值,这将在不同审核者对同一行/列进行多次更改时为您提供帮助

因此,在您的界面中,您将能够看到对所有表的所有建议更改,仅查看实际值和建议的新值,并在需要时更新数据库

可能的补充:要填充此表,您可以使用触发器,而不是更改当前代码

  • 您能详细说明为什么应该将 SQL 代码存储在单元格中吗?在我看来,将应用程序逻辑存储在表中,并且当主持人进行多次更改时,我真的不明白这有什么帮助...... (3认同)