以下是使用的序列创建语法:
CREATE SEQUENCE BD_ID_SEQ AS INTEGER
START WITH 999
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
NO CYCLE;
我有一个包含以下值记录的表:
b_id ------- 2547 NULL 2800 NULL NULL NULL NULL
我运行以下内容:
select case
when b_id is NULL then cast((select next value for bd_id_seq) as character varying(10))
else b_id
end b_id
from table1;
结果来了:
b_id ------- 2547 1000 2800 1000 1000 1000 1000
我在期待:
2547 1000 2800 1001 1002 1003 1004
为什么在case语句中为什么序列似乎没有超过第一个值? 谢谢, 海金妮
答案 0 :(得分:6)
您需要更改调用下一个值的方式。只需删除select
并请求下一个值即可。如下所示。
select case
when b_id is NULL then cast((next value for bd_id_seq) as character varying(10))
else b_id
end b_id
from table1;