PostgreSQL存储过程中的递增顺序

时间:2019-03-26 16:34:36

标签: postgresql sequence plpgsql

如何为存储过程的每次运行自动递增一次序列号,以及如何在ComboBox语句的where条件下使用它?

我已经在每次运行中为下一个值分配了序列号,但是我无法在update条件下使用它。

where

1 个答案:

答案 0 :(得分:1)

nextval()在返回结果值之前自动推进序列。您不需要任何额外的东西。只需直接在查询中使用该函数即可:

update t_contract c
set    end_date = ce.correct_end_date
     , status = 'Active'
     , orig_end_date = ce.correct_end_date
from   ops.t_mon_ConnectEasy ce
where  c.contract_id = ce.contract_id
and    iteration_id = nextval('ops.mon_connecteasy_seq');

请注意,并发事务可能会推进序列,从而在序号中产生虚拟缺口。

我I不安地怀疑这可能不是实现未公开目标的最佳方法。