gpt4 book ai didi

mysql - mysql中多用户更新同一条记录时如何防止覆盖之前的数据?

转载 作者:行者123 更新时间:2023-11-29 21:53:44 31 4
gpt4 key购买 nike

用户A和用户B正在修改同一条记录的同一列,当A完成时,该列的值发生变化。

如何防止B覆盖A输入的数据或者只是显示一些提示?

我之前使用的方法是添加一个标记“更新次数(每次更新增加1)”的列。每次有人更新列之前,他/她都会得到标记,所以当他/她提交更新,该标记会与数据库进行比较,不同时,说明有人更改了。

还有其他想法吗?

最佳答案

我假设您希望用户 B 在数据发生更改时提交失败。

您可以使用此模式:

  1. 保留数据的两份副本:之前的数据和之后的数据。
  2. 当用户更改列时,您只需更新后续数据。
  3. 提交数据时,您将执行以下操作:
  4. 启动针对数据库的事务
  5. 读取数据库中的当前值
  6. 将当前值与您保存的之前值进行比较
  7. 如果值相同,则您可以写入新值。
  8. 如果它们不同,您将向用户报告错误。

另一种模式是这样的:

  1. 向表中添加时间戳列。
  2. 保存您读取的数据的时间戳。
  3. 提交数据时,您将执行以下操作:
  4. 启动针对数据库的事务
  5. 读取数据库中的当前时间戳
  6. 与您保存的时间戳进行比较
  7. 如果值相同,则您可以写入新值并更新时间戳列以表明您已对该行进行了更改。
  8. 如果它们不同,您将向用户报告错误。

这是数据库在使用乐观并发事务控制 ( https://en.wikipedia.org/wiki/Optimistic_concurrency_control ) 时自行执行的操作的编程表示。

关于mysql - mysql中多用户更新同一条记录时如何防止覆盖之前的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33384785/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com