【问题标题】:Is it possible to create a Lost Update with MySQL Workbench是否可以使用 MySQL Workbench 创建丢失的更新
【发布时间】:2018-01-23 11:46:15
【问题描述】:

我想用 MySQL Workbench 创建一个丢失的更新。因此,我有 2 个连接到我的数据库和 2 个事务。我还将事务隔离级别更改为读取未提交但事务 A 在更新语句启动时使用当前数据。它从不使用第一个 select 语句中的数据,并且使用 select ... for update 事务 b 被阻止。

事务 A(首先开始):

Start transaction;
SELECT * FROM table;
Select sleep(10);          -- <- Transaction B executes in this 10 seconds 
UPDATE table SET Number = Number + 10 WHERE FirstName = "Name1";
COMMIT;

事务 B:

Start transaction;
UPDATE table SET Number = Number - 5 WHERE FirstName = "Name1";
COMMIT;

是否可以使用 MySQL Workbench 创建此故障。我的代码有什么问题?

感谢您的帮助

【问题讨论】:

    标签: mysql sql transactions isolation-level transaction-isolation


    【解决方案1】:

    A 中的更新在执行 sleep 后处理数据。 Select before 在事务中没有任何作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 2015-05-27
      • 2017-09-02
      • 2021-07-24
      • 2012-02-23
      • 2011-07-27
      • 1970-01-01
      相关资源
      最近更新 更多