5
テーブルのレコードのフィールドを選択し、これらのフィールドの1つだけを更新したいとします。どのようにできるのか?PostgreSQLのUpdateステートメントを選択
私はこれを試してみてください。
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」真が設定されます!
こんにちは、私はテーブルをロックしたい、あなたは私の前の質問を見ることができますか? http://stackoverflow.com/questions/14707002/lock-table-in-postgresql#comment20571089_14707002 –
私は一見しますが、あなたの問題を解決する場合は、この回答に同意してください。 –
彼はFOR UPDATEにLIMIT 1を使用していることに注意してください。これは、通常、where句が1つ以上のレコードを返す可能性があることを意味します。さて、私はテーブルのための彼のDDLを持っていないので、彼はプライマリキーが何であれ、idvideoの場合は、UPDATEビデオSETを使用する必要がありますを使用する必要がありますSET SET FLAG = true WHERE idvideo =?その理由は、彼が同じクエリ(ORDER BY/LIMIT)を使用しても、別のレコードをまだ更新することができるからです(新しいIDがその前に挿入される可能性があります) – Rahly