gpt4 book ai didi

mysql - 为什么 "update foo ... where bar is null"让多个调用者声明同一行?

转载 作者:行者123 更新时间:2023-11-29 22:07:35 24 4
gpt4 key购买 nike

我有一个相当基本的查询:

UPDATE the_table SET col1=[something], col2=[something else] WHERE col1 IS NULL AND col2 IS NULL LIMIT 1;

发出查询后,调用者立即执行以下操作:

SELECT col3 FROM the_table where col1=[something], col2=[something else];

不幸的是,并发调用者正在声明同一行。

我宁愿不执行SELECT FOR UPDATE,因为[选择、更新、选择]将涉及到数据库的三个rpc,而不是两个(这已经够糟糕了。)

我发现某些sql方言允许使用(UPDLOCK)更新the_table,但我的(galera/MySQL)不允许。我发现令人震惊的是,我必须经过这么多的数据库点击才能执行这样一个基本概念。我发现我的大部分搜索工作都在讨论支持 UPDLOCK 的方言的页面上结束。

它从这里到哪里去?

最佳答案

您有autocommit=1吗?

如果没有事务完整性,其他一些连接可能会在执行 SELECT 之前插入并更改行。

请注意,可能有多个 NULL 行,因此 UPDATE 可能会更改许多行。

您在UPDATE之后检查过“受影响的行”吗?也许没有更改任何行。

关于mysql - 为什么 "update foo ... where bar is null"让多个调用者声明同一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32000906/

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