在PostgreSQL中返回*的UPDATE失败

时间:2017-04-28 18:22:09

标签: postgresql

我有这样的查询:

 UPDATE subscribers AS s SET status = 1 
 FROM (SELECT id FROM subscribers 
       WHERE client_id = *** AND status = 0 ORDER BY id LIMIT 5) AS t 
 WHERE t.id = s.id AND status = 0 RETURNING *

(解释:选择所有状态为0的行但是将它们更新为状态= 1并且只给我五个最大值。)

我在订阅者表中有11行,状态为=

我遇到的问题是:当我在我的代码中执行此查询时(node.js,它不是什么编程语言,它是查询问题)在FIRST TOW循环中(首先查询)它返回5行(这是好的,因为我在内部查询中有LIMIT 5)。

但是在最后一次查询中,我有 0条记录...... ,在我的表格中有一行状态= 0等待被激活

有人有线索吗?我坚持这个

1 个答案:

答案 0 :(得分:0)

我不得不说我的代码是并行发送查询(几乎是在同一时间),而且它正在创建一个"种族"条件,因为" subsequents"的内部查询查询正在接收OLD数据(在第一个查询的外部UPDATE之前)...所以这是一个比赛条件......我在一段时间后解决了它,感谢您的帮助,我从中学到了很多东西。