Oracle: фрагмент последовательности изменения не работает - PullRequest
0 голосов
/ 14 января 2020

Я хочу изменить свою последовательность (текущее значение 5) до максимальной с максимальным значением идентификатора (текущее значение 100). Вот что я сделал:

alter sequence s_id increment by 100;
select s_id.nextval from dual;
alter sequence s_id increment by 1;

И я запускаю этот фрагмент в SQL разработчику, когда я делаю select s_id.nextval from dual, я ожидал получить 101, но вместо этого он показывает 6.

Я хотел бы знать, в чем проблема? Когда я выполняю построчно, я правильно получаю 101. Спасибо

1 Ответ

0 голосов
/ 14 января 2020

Является ли последовательность последовательностью на основе столбцов идентификаторов? Когда да, вы должны l oop, пока не получите правильное значение, потому что изменение приращения не работает.

При нормальной последовательности это должно работать

SQL> drop sequence t_seq;

Sequence T_SEQ gelöscht.

SQL> set echo on;
SQL> create sequence t_seq;

Sequence T_SEQ erstellt.

SQL> select t_seq.nextval  from dual;

   NEXTVAL
----------
         1

SQL> select /*csv*/ sequence_name, increment_by,last_number from user_sequences where sequence_name = 'T_SEQ';
"SEQUENCE_NAME","INCREMENT_BY","LAST_NUMBER"
"T_SEQ",1,21

SQL> alter sequence t_seq increment by 100;

Sequence T_SEQ geändert.

SQL> select t_seq.nextval  from dual;

   NEXTVAL
----------
       101

SQL> select /*csv*/  sequence_name, increment_by,last_number from user_sequences where sequence_name = 'T_SEQ';
"SEQUENCE_NAME","INCREMENT_BY","LAST_NUMBER"
"T_SEQ",100,2101

SQL> alter sequence t_seq increment by 1;

Sequence T_SEQ geändert.

SQL> select  t_seq.nextval  from dual;

   NEXTVAL
----------
       102

SQL> select /*csv*/ sequence_name, increment_by,last_number from user_sequences where sequence_name = 'T_SEQ';
"SEQUENCE_NAME","INCREMENT_BY","LAST_NUMBER"
"T_SEQ",1,122
...