mysql - 并发/同步问题

标签 mysql database oracle locking

我有 2 个程序在 2 台不同的机器上运行。
每个程序都有一个称为 updateRecord 的方法,它执行以下两件事:
1. 对特定记录 Z
执行 SELECT 查询 2. 对同一条记录进行更新查询。

如果这 2 个查询在同一个事务中(在 beginTransaction 和 commitTransaction 之间),它能保证正确执行吗?

即,以下操作序列是否会无法成功执行?

  1. Prog-1 选择
  2. Prog-2 选择
  3. Prog-1 更新
  4. Prog-2 更新

  1. Prog-1 选择
  2. Prog-1 更新
  3. Prog-1 选择
  4. Prog-2 更新
  5. Prog-1 提交
  6. Prog-2 提交

最佳答案

您的程序需要在选择记录时锁定记录 - 例如使用 SELECT FOR UPDATE 语法。这样,记录将被锁定,直到 UPDATE 完成。

关于mysql - 并发/同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807157/

相关文章:

mysql - 如何使用条件更新数据库表中的值?

php - Sql 查询在 php 中返回与 mysql shell 中不同的结果

php 表单输入验证

sql - 如何在Oracle中将表中的所有列从null设置为not null

xml - 如何在 PL/SQL 数据库中保存 XML 文件

使用 MyBatis 的 SQL 异常

php - 如何在用户登录时显示用户特定功能?

MySQL "unknown column"

java - "derby dialect has been deprecated"

sql - Oracle数据库触发器编译问题