Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Netezza I'm trying to use a sequence in a case statement but the sequence value doesn't increment

Here is the sequence creation syntax used:

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

I have a table with the following values records:

b_id
-------
2547
NULL
2800
NULL
NULL
NULL
NULL

I run the following:

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;

The result comes to:

b_id
-------
2547
1000
2800
1000
1000
1000
1000

I was expecting:

2547
1000
2800
1001
1002
1003
1004

Any ideas why in the case statement the sequence doesn't seem to increment past the first value? Thanks, Ginni

like image 976
user3254441 Avatar asked Jan 30 '14 18:01

user3254441


1 Answers

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;
like image 75
Niederee Avatar answered Sep 30 '22 03:09

Niederee