如何在plpgsql中获得单行?

时间:2015-02-05 04:25:06

标签: postgresql

我正在查询是否有结束时间,如果没有,那么我想更新它以包括当前时间。但是,我需要存储如果结束时间存在以及稍后要更新的行的id,但是我不太确定如何执行此操作。

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 个答案:

答案 0 :(得分: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;