我在 MySQL 数据库中有一个列,我想存储其值的所有修订以及更改日期。
MySQL 中是否有任何内置机制允许我这样做,或者是否有任何推荐的方法来解决这个问题?
MySQL 没有内置这样的功能。您需要自己实现此功能,具体取决于您需要存储的内容。您可能会在持久性逻辑中引入一个层,将您需要的日志数据插入到单独的历史表中。
根据您所做的更改数量,请务必考虑清理策略,因为这些历史记录会随着时间的推移而变得庞大。
如果您正在讨论需要此类历史记录的多个表,您可以根据预期的更改总量,使用单个历史记录表和一个附加列来标识更改所属的表,或者使用单独的历史记录每个数据表的表。
此外,请查看可用的不同存储引擎。有一个压缩的存档存储引擎,一旦插入就不允许修改数据,还有其他限制,但它的存储要求比 InnoDB 的要低。它是为存档目的而非临时查询而设计的,因此它可能适合您,也可能不适合您。