gpt4 book ai didi

MySQL 事务不返回任何行

转载 作者:行者123 更新时间:2023-11-29 15:34:58 24 4
gpt4 key购买 nike

我正在尝试运行一个执行一些操作的查询..

  1. 为更新后的 ID 创建变量
  2. 更新作业表中状态 = 0 的所有作业
  3. 选择所有更新的职位。

这背后的原因是,有多个节点 js 集群在查询数据库,并且我不能遇到其中两个节点读取相同作业的情况,因为该作业将被处理两次,这很糟糕。

我已经快到了。它正在运行,但它没有返回任何内容,即使它告诉我:

2 行受影响匹配行:2 更改:2 警告:0

这是该表的简单版本

CREATE TABLE test (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`status` INT(4) NOT NULL,
`task` INT(4) NOT NULL,
PRIMARY KEY (`id`));

让我们在表中放入一些数据..

INSERT INTO test (status, task)
VALUES (1, 1), (0, 1), (0, 2), (3, 1);

现在我们有一个包含 4 个作业的“测试”表。状态索引看起来像这样..

0 = unprocessed
1 = processing
3 = completed

我的查询的输出应该是将第 2 行和第 3 行从状态 0 更新为 1,然后使用在 select 语句中检索到的这些 ID 来获取其余数据。

这是我的查询:

BEGIN;
SET @LastUpdateID = NULL;
UPDATE test
SET status = 1
WHERE status = 0
AND (SELECT @LastUpdateID := CONCAT_WS(',', id, @LastUpdateID));
SELECT * from test where id in (@LastUpdateID);
COMMIT;

现在奇怪的是,它运行正常,只是没有从 SELECT * 语句返回行。我什至检查了变量 @LastUpdateID 的输出,看起来像:'2,3'

这是我在 Workbench 中得到的屏幕截图,我还从命令行确认了相同的结果。

screenshot of mysql workbench not returning data

这就是我所期望的事情。 screenshot of mysql workbench displaying correct data

最佳答案

看起来已经有人回答了 MySQL: return updated rows

看起来,答案和你已经做的一样......

SET @uids := null;
UPDATE footable
SET foo = 'bar'
WHERE fooid > 5
AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) );
SELECT @uids;

尝试删除开始/提交

关于MySQL 事务不返回任何行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58337869/

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