9

我想选择表记录中的字段并仅更新其中一个字段。我能怎么做?

我试试这个:

SELECT v.idvideo, v.title 
FROM video v  WHERE v.schedulingflag IS FALSE AND v.errorflag IS FALSE 
ORDER BY v.idvideo  LIMIT 1 FOR UPDATE ;

UPDATE video  SET schedulingflag = true;

但是通过这种方式,它在所有记录中设置字段“schedulingflag”为真!

4

1 回答 1

16

SELECT FOR UPDATE语法告诉 PG 您将更新这些记录并锁定它们以防止并发访问。但是,您仍然需要发出适当的UPDATE调用来更改您锁定的特定记录。

在这种情况下,只需WHERE在您的 中使用相同的子句UPDATE,例如:

UPDATE video  SET schedulingflag = true 
WHERE schedulingflag IS FALSE AND errorflag IS FALSE;
于 2013-02-05T14:53:02.247 回答