5

以下是使用的序列创建语法:

CREATE SEQUENCE BD_ID_SEQ AS INTEGER
    START WITH 999
    INCREMENT BY 1
    NO MINVALUE 
    NO MAXVALUE 
    NO CYCLE;

我有一个包含以下值记录的表:

出价
--------
2547
无效的
2800
无效的
无效的
无效的
无效的

我运行以下命令:

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;

结果是:

出价
--------
2547
1000
2800
1000
1000
1000
1000

我期待:

2547
1000
2800
1001
1002
1003
1004

任何想法为什么在case语句中序列似乎没有超过第一个值?谢谢,金妮

4

1 回答 1

6

you need to change the way you are calling the next value. Just remove the select and request the next value. Like below.

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;
于 2014-01-30T23:08:26.243 回答