【发布时间】:2010-12-27 14:34:27
【问题描述】:
MySQL 有内置的行版本控制机制吗?类似于 MS SqlServer 中的“时间戳”列。
【问题讨论】:
标签: mysql rowversion
MySQL 有内置的行版本控制机制吗?类似于 MS SqlServer 中的“时间戳”列。
【问题讨论】:
标签: mysql rowversion
Mysql 没有内置的行版本控制机制。虽然使用时间戳类型可能看起来没问题,但是对于同时更新多行并且花费比时间戳的解析时间更长的查询,您会遇到这种情况,因为分配的值是基于更改的开始而不是结束变化。
因此,如果您的更新查询影响 100 行,所有行都将具有相同的时间戳(例如值 2015-10-28 09:47:10.123456)。但是,这些行可能要到 2015-10-28 09:47:10.654321 才能完成写入。
如果您根据其他时间戳(例如 2015 年 10 月 28 日 09:47:10.500000)单独查找所有更改的行,您将不会得到您想要的结果。根据您的代码,您可能会错过更改的 100 行。
事实上,现在对行的更改可能具有过去的时间戳,您不能简单地比较 2 个时间戳来获取所有更改的行。
【讨论】:
如果您添加“时间戳”字段,它会在您更新行时自动更新 - 虽然不完全是版本控制,但听起来可能就是您所追求的。
【讨论】: