MySql的行版本控制

3
MySQL中是否有内置的行版本控制机制?类似于MS SqlServer中的“时间戳”列。
2个回答

2

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个时间戳以获取所有更改行的原因。


1
我认为问题更多地出现在两个连接在时间上不会因时间戳分辨率而导致时间值改变的情况下更新同一条记录。在我看来,查找同时更改的记录与行版本无关。 - Günter Zöchbauer

1
如果您添加一个"timestamp"字段,它将在每次更新行时自动更新-虽然不完全是版本控制,但听起来很可能是您所需要的。

谢谢你。'时间戳' 数据类型应该会有帮助。 - alwayslearning

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接