Chcę wybrać pola w rekordzie tabeli i zaktualizować tylko jedno z tych pól. Jak mogę zrobić?Wybierz opcję Aktualizuj w PostgreSql
próbuję to:
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;
Ale w ten sposób ustawia pole "schedulingflag" true we wszystkich rekord!
Cześć, chcę zablokować tabeli, można zobaczyć moje poprzednie pytanie? http://stackoverflow.com/questions/14707002/lock-table-in-postgresql#comment20571089_14707002 –
Będę musiał sprawdzić, ale proszę oznaczyć tę odpowiedź jako zaakceptowaną, jeśli rozwiązuje problem. –
Należy zauważyć, że używa on LIMITU 1 w FOR FOR UPDATE, to zazwyczaj oznacza, że jego klauzula where może zwrócić więcej niż 1 rekord. Teraz, ponieważ nie mam jego DDL dla tabeli, powinien użyć tego, co jest jego kluczem podstawowym do aktualizacji, jeśli jego idvideo, to powinien użyć UPDATE wideo SET scheduleflag = true WHERE idvideo = ?. Powodem jest to, że nawet jeśli użyje tego samego zapytania (ORDER BY/LIMIT), może NASTĘPNIE zaktualizować inny rekord (przed nim można wstawić nowy identyfikator) – Rahly