UPDATE .. WHERE ... - 交易可以发生在两者之间

时间:2015-01-26 06:57:15

标签: mysql sql concurrency transactions innodb

如果我创建如下

之类的SQL语句
 UPDATE table SET a='000' WHERE b='Me!';

假设查询找到满足条件的行,是否有可能另一个事务更改字段' b'在我更新之前?

如果是这种情况,我假设我的交易在我尝试提交时会失败?

1 个答案:

答案 0 :(得分:0)

如果另一个事务已更新且未提交具有b = Me!的行,则您将遇到行锁定异常。如果已提交,则表示b值已更改,您的查询将不会影响该行。

第二个选项,您已经更新了行,另一个查询想要在提交之前更新该行。在这种情况下,第二个事务将获得行锁定错误。如果您已提交,则其他查询不会影响该行。

提交时不会收到任何错误消息或异常。如果有任何错误,您将在运行更新查询时获得。