Ich möchte Felder in einem Datensatz einer Tabelle auswählen und nur eines dieser Felder aktualisieren. Wie kann ich?Wählen Sie für Update-Anweisung in PostgreSql
Ich versuche dies:
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;
Aber auf diese Weise setzt es Feld "schedulingflag" true in allen Rekord!
Hallo, ich möchte die Tabelle sperren, können Sie meine vorherige Frage sehen? http://stackoverflow.com/questions/14707002/lock-table-in-postgresql#comment20571089_14707002 –
Ich werde einen Blick, aber bitte markieren Sie diese Antwort als akzeptiert, wenn es Ihr Problem löst. –
Beachten Sie, dass er ein LIMIT 1 für das FOR UPDATE verwendet, dies bedeutet im Allgemeinen, dass seine WHERE-Klausel mehr als 1 Datensatz zurückgeben kann. Jetzt, da ich nicht seine DDL für den Tisch habe, sollte er, was auch immer sein Primärschlüssel ist, um das Update zu tun, wenn sein Idvideo, dann sollte er UPDATE Video verwenden SET scheduleflag = wahr WHERE idvideo = ?. Der Grund dafür ist, dass er selbst dann, wenn er dieselbe Abfrage verwendet (ORDER BY/LIMIT), einen anderen Datensatz STILL aktualisieren könnte (davor könnte eine neue ID eingefügt werden). – Rahly