gpt4 book ai didi

sql - 选择受更新影响的行

转载 作者:可可西里 更新时间:2023-11-01 06:49:21 27 4
gpt4 key购买 nike

如何在 MySQL 中获取受 SQL UPDATE 语句影响的确切行?

我在许多计算机上有许多客户端,它们可以随时根据 WHERE 子句更新同一个表中的行,并且每个客户端都需要在另一个系统中为它们影响的每一行做一些事情,因此获取受影响项目的列表必须准确且不易受竞争条件的影响。

一些数据库支持 UPDATE ... OUTPUT UPDATED.id WHERE ... 例如SQL Server .

如何在 MySQL 中执行此原子 UPDATE/SELECT

(我看到有人建议先执行 SELECT,然后将 ID 用作 UPDATE 中的 IN 子句。但另一个客户端可能会运行相同的 SELECT 并检索相同的行,而第一个客户端正在排队其 UPDATE 等?)

最佳答案

使用表锁定或事务(如果存储引擎支持)来防止竞争条件。

LOCK TABLES tablename;
SELECT * FROM tablename WHERE x.
do something else
UPDATE tablename SET y WHERE x.
UNLOCK TABLES

关于sql - 选择受更新影响的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163920/

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