9

テーブルのレコードでフィールドを選択し、これらのフィールドの 1 つだけを更新したいと考えています。どのようにできるのか?

私はこれを試します:

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」フィールドを true に設定します。

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 に答える