代码之家  ›  专栏  ›  技术社区  ›  alwayslearning

MySQL的行版本控制

  •  2
  • alwayslearning  · 技术社区  · 16 年前

    MySQL是否有内置的行版本控制机制?类似于ms-sqlserver中的“timestamp”列的内容。

    2 回复  |  直到 10 年前
        1
  •  1
  •   benlumley    16 年前

    如果您添加了一个“时间戳”字段,它将在您更新该行时自动更新它——虽然这并不完全是版本控制,但听起来它可能是您所追求的。

        2
  •  1
  •   Richard A Quadling    10 年前

    MySQL没有内置的行版本控制机制。虽然使用时间戳类型似乎没问题,但如果查询同时更新多行,并且花费的时间比时间戳的解析时间长,则可能会遇到这种情况,因为分配的值基于更改的开始而不是更改的结束。

    因此,如果更新查询影响100行,那么所有行都将具有相同的时间戳(例如,值为2015-10-28 09:47:10.123456)。但是,在2015-10-28 09:47:10.654321之前,这些行可能不会完成写入。

    如果单独查找基于其他时间戳的所有更改行(例如2015-10-28 09:47:10.500000),则不会得到所需的结果。根据您的代码,您可能会错过更改的100行。

    事实上,现在对行的更改在过去可能有一个时间戳,您不能简单地比较两个时间戳来获取所有更改的行。