Как использовать SEQUENCE в Apache Derby? - PullRequest
8 голосов
/ 20 апреля 2011

Я бы хотел использовать поддержку SEQUENCE в Apache Derby 10.7. Я создал последовательность со следующим утверждением:

CREATE SEQUENCE SAMPLE_SEQ AS INT MAXVALUE 999999 CYCLE;

Как выбрать следующее / текущее значение из SAMPLE_SEQ? Не могли бы вы помочь мне с запросом?

Ответы [ 5 ]

8 голосов
/ 20 апреля 2011

Apache Derby Doc говорит: Используйте СЛЕДУЮЩЕЕ ЗНАЧЕНИЕ ДЛЯ выражения

Должно быть что-то вроде

SELECT NEXT VALUE FOR SAMPLE_SEQ;
3 голосов
/ 20 апреля 2011

Используйте СЛЕДУЮЩЕЕ ЗНАЧЕНИЕ ДЛЯ, как указано в руководстве:

http://db.apache.org/derby/docs/10.7/ref/rrefsqljnextvaluefor.html#rrefsqljnextvaluefor

1 голос
/ 17 мая 2011

Для получения текущего значения последовательности должен быть выполнен следующий SQL:

SELECT CURRENTVALUE FROM SYS.SYSSEQUENCES WHERE SEQUENCENAME='SAMPLE_SEQ'
0 голосов
/ 29 октября 2015

В случае, если вы хотите извлечь «текущее значение» из «последовательности»:

  • значений (следующее значение для <<em> sequence >)

То же в Java с использованием JDBC:

ResultSet rs = conn.prepareStatement("values (next value for <sequence>)").executeQuery();
rs.next();
int seqValue = rs.getInt(1);

Источник: Архив списков рассылки пользователей Derby

0 голосов
/ 11 июля 2013

В командной строке SQL вы можете запросить следующее значение с помощью этого оператора:

values NEXT VALUE FOR <sequence_name>

Это будет работать как выражение, встроенное в оператор INSERT. E.g.:

INSERT INTO <table_name> (IDFIELD) VALUES (NEXT VALUE FOR <sequence_name>)
...