2015-02-05 3 views
0

종료 시간이 있는지 묻는 중입니다. 현재 시간을 포함하도록 업데이트하려고하지 않습니다. 그러나 끝 시간이 존재하고 나중에 업데이트 할 행의 ID를 저장해야하지만이 작업을 수행하는 방법을 잘 모르는 경우 저장해야합니다.plpgsql에서 단일 행을 얻는 방법?

endTime := now(); 
strresult := 'select end_time from process order by start_time desc limit 1'; 
IF strresult = '' THEN 
    UPDATE tasks SET end_time = endTime WHERE id = ???; 
END IF; 

답변

1

문의하신 내용은 SELECT INTO입니다. 그러나 당신은 그것을 필요로하지 않습니다. 시간이 움직이지 않는 가변 내부 트랜잭션에 현재 시간을 저장하면 안됩니다. 귀하의 코드는 약간 지저분합니다 - 열린 프로세스없이 상황을 검색하고 작업을 종료하십시오.

IF NOT EXISTS(SELECT * 
       FROM process 
       WHERE end_time IS NULL) 
THEN 
    UPDATE tasks SET end_time = CURRENT_TIME 
    WHERE end_time IS NULL; 
END IF; 
+0

메신저 마지막 프로세스를 검색하고 종료 시간이 null인지 아닌지 확인하여 end_time이 null 인 프로세스를 검색합니다. – Saad

관련 문제