Desidero selezionare i campi in una registrazione di una tabella e aggiornare solo uno di questi campi. Come posso fare?Selezionare per la dichiarazione di aggiornamento in PostgreSql
provo questo:
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;
Ma in questo modo pone campo "schedulingflag" vero in tutti i record!
Ciao, voglio bloccare la tabella, si può vedere la mia domanda precedente? http://stackoverflow.com/questions/14707002/lock-table-in-postgresql#comment20571089_14707002 –
Darei un'occhiata, ma contrassegnare questa risposta come accettata se risolve il problema. –
Nota che sta utilizzando un LIMIT 1 per FOR UPDATE, questo generalmente significa che la sua clausola where può restituire più di 1 record. Ora, dato che non ho il suo DDL per il tavolo, dovrebbe usare qualunque sia la sua chiave primaria per fare l'aggiornamento, se è idvideo, allora dovrebbe usare UPDATE video SET scheduleflag = true WHERE idvideo = ?. Il motivo è che anche se usa la stessa query (ORDER BY/LIMIT), potrebbe ANCORA aggiornare un record diverso (potrebbe essere inserito un nuovo ID prima di esso) – Rahly