5
테이블의 레코드에서 필드를 선택하고이 필드 중 하나만 업데이트하려고합니다. 어떻게해야합니까?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"을 설정합니다
나는이 시도!
안녕, 난 당신이 내 앞의 질문을 볼 수 있습니다, 테이블을 잠글 :이 경우
, 그냥 예컨대, 당신의
UPDATE
에서 같은WHERE
절을 사용할 수 있습니까? http://stackoverflow.com/questions/14707002/lock-table-in-postgresql#comment20571089_14707002 –문제가 해결되면이 대답을 허용으로 표시해주세요. –
참고 : FOR UPDATE에 LIMIT 1을 사용하고 있습니다. 이는 일반적으로 where 절이 둘 이상의 레코드를 반환 할 수 있음을 의미합니다. 자, 테이블에 대한 DDL이 없으므로 IDVideo라면 UPDATE 비디오 SET을 사용해야한다. scheduleflag = true WHERE idvideo =? 이유는 동일한 쿼리 (ORDER BY/LIMIT)를 사용하더라도 다른 레코드를 계속 업데이트 할 수 있기 때문입니다 (이전에 새 ID를 삽입 할 수 있음) – Rahly