Сергей Лукин Asked:2020-04-24 21:30:59 +0000 UTC2020-04-24 21:30:59 +0000 UTC 2020-04-24 21:30:59 +0000 UTC 如何实现表更改历史记录? 772 有一个任务:为这个表实现一个编辑日志: 应该可以在一次编辑中对多个字段进行更改,能够回滚更改。 问题:如何将这些编辑的历史存储在数据库中? mysql 2 个回答 Voted Best Answer Alex R. 2020-04-25T23:50:49Z2020-04-25T23:50:49Z 存储历史问题的解决方案取决于存储时间、数据量、写入速度、表的数量、对改变表结构的支持等因素,因此没有完全通用的解决方案。 许多数据库支持闪回技术,此时您可以查看前一段时间的数据。这通常需要大量存储空间,并且对表结构更改很敏感。 如果您只想存储呈现表的历史记录,那么简单的解决方案如下: 通过添加带有指向前一个条目的链接的列,将数据存储在同一个表中。优点是对结构变化不敏感,缺点是冗余,因为。每次都会存储所有字段,即使是那些没有更改的字段,用于比较和恢复数据的复杂处理。 将数据存储在几乎相同的表中,并具有对主表的引用以及将所有字段保持为空的能力。利弊与之前的解决方案相反。 将数据存储在字段值表中。优点:无需跟踪结构更改,缺点:缺乏输入和支持处理某些类型的字段,例如BLOB. 一种简单而通用的跟踪更改的方法是触发表的插入、更新、删除。关于几个领域的变化我不太了解的可能性。 Vladimir Galkov 2020-04-26T05:34:09Z2020-04-26T05:34:09Z 有必要监视您使用的数据库上的事件的触发器(存储过程)。如果这样的架构不与部署应用程序和开发的新副本的便利性相矛盾。
存储历史问题的解决方案取决于存储时间、数据量、写入速度、表的数量、对改变表结构的支持等因素,因此没有完全通用的解决方案。
许多数据库支持闪回技术,此时您可以查看前一段时间的数据。这通常需要大量存储空间,并且对表结构更改很敏感。
如果您只想存储呈现表的历史记录,那么简单的解决方案如下:
通过添加带有指向前一个条目的链接的列,将数据存储在同一个表中。优点是对结构变化不敏感,缺点是冗余,因为。每次都会存储所有字段,即使是那些没有更改的字段,用于比较和恢复数据的复杂处理。
将数据存储在几乎相同的表中,并具有对主表的引用以及将所有字段保持为空的能力。利弊与之前的解决方案相反。
BLOB.一种简单而通用的跟踪更改的方法是触发表的插入、更新、删除。关于几个领域的变化我不太了解的可能性。
有必要监视您使用的数据库上的事件的触发器(存储过程)。如果这样的架构不与部署应用程序和开发的新副本的便利性相矛盾。