Tôi muốn chọn các trường trong bảng tính lại bảng và chỉ cập nhật một trong các trường này. Làm thế nào tôi có thể làm được?Chọn Cập nhật câu lệnh trong PostgreSql
tôi cố gắng này:
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;
Nhưng theo cách này nó đặt trường "schedulingflag" true trong tất cả các kỷ lục!
Hi, tôi muốn để khóa bảng, bạn có thể xem câu hỏi trước đây của tôi? http://stackoverflow.com/questions/14707002/lock-table-in-postgresql#comment20571089_14707002 –
Tôi sẽ xem xét, nhưng vui lòng đánh dấu câu trả lời này là được chấp nhận nếu giải quyết được sự cố của bạn. –
Lưu ý rằng anh ta sử dụng LIMIT 1 cho FOR UPDATE, điều này thường có nghĩa là mệnh đề where của anh ta có thể trả về hơn 1 bản ghi. Bây giờ, kể từ khi tôi không có DDL của mình cho bảng, ông nên sử dụng bất cứ điều gì chính của ông là làm bản cập nhật, nếu idvideo của nó, sau đó ông nên sử dụng UPDATE video SET scheduleflag = true WHERE idvideo = ?. Lý do là ngay cả khi anh ta sử dụng cùng một truy vấn (ORDER BY/LIMIT), anh ta có thể STILL cập nhật một bản ghi khác (một id mới có thể được chèn vào trước nó) – Rahly