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

标签 mysql sql concurrency transactions innodb

如果我创建如下 SQL 语句

 UPDATE table SET a='000' WHERE b='Me!';

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

如果是这种情况,我假设当我尝试提交时我的事务将会失败?

最佳答案

如果另一个事务已经更新并且未提交具有 b = Me! 的行,则会出现行锁定异常。如果已提交,则意味着 b 值已更改,您的查询将不会影响该行。

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

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

关于mysql - UPDATE.. WHERE... - 交易可以在两者之间发生吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28145844/

相关文章:

ios - 我的 iOS 应用程序在主线程上运行了多长时间?

scala - 延迟评估和死锁

concurrency - map()和reduce()适合Go中的并发处理吗?

mysql - asp.net 中带有文本和图像的自动完成文本框

MySQL select - 按组获取计数

sql - T-SQL 使用 sp_executesql 使用动态命名数据库创建表

mysql - 为什么 POINT() 被存储为 ??*??E@z?3M??Q?在 mysql 表中

php - 检索数据库记录以在 PHP 代码中使用

mysql - 如何为mysql innodb配置memcached?

html - 如何用Jsp和Mysql将列转换为行?