【发布时间】:2011-11-13 17:21:05
【问题描述】:
我有一个数据库,它总是在变化……更新、插入和删除。 出于统计原因,我们需要某个时间“回到过去”(-: 并像过去一样查询数据库。
例如:
我有一个名为user 的表,我昨天更新了其中一个用户,如下所示:
update user set status = 1 where user_id = 2656
旧的status 是 0,所以如果我可以“回到过去”到昨天并查询它会得到status 0,如果现在查询它会得到status 1。
我知道这样做的一种方法是触发更新,插入和删除并将其记录到不同的表中,但它不是那么干净,并且会使开发变得复杂。
我希望你说得对,对于不会说英语的人来说,解释起来并不是那么简单......
Edit-1
我们在应用程序中几乎没有算法,我们总是修复它们并升级它们,我们必须知道数据库过去的情况,以便我们可以处理算法,我们有可以更改的查询/接口以支持它(我是意识到这不是一个为期一周的项目,我们有资源)
谢谢
【问题讨论】:
-
展示您的表格,以及到目前为止您尝试过的内容?
-
我个人认为这是一个相当糟糕的主意。如果您需要更改大量数据,则需要某种接口。此外,如果您将
0更改为1,则将1更改为0同样容易。我不明白您为什么需要类似“时间机器”的功能。 -
@JamWaffles,@DhruvPathak,@Robin Castlin - 我编辑问题(见 Edit-1)谢谢
-
没有办法在 MySQL(或据我所知的任何其他 SQL 服务器)中“查询过去”。您唯一的选择是实施某种备份或审计跟踪系统。一旦你接受了这一点,你就有很多选择......
-
@Ivar,你显然没听说过二进制日志,不然你就知道你说的是废话。