Генератор Firebird, который увеличивается в десятых долях

Используя Firebird 2.5, я хочу создать генератор, который увеличивает столбец каждые 10 единиц, а не один за другим. Я не смог найти никаких ссылок на это в документации Firebird или в Интернете.


person ppro    schedule 23.02.2017    source источник


Ответы (1)


При использовании next value for <sequence name> с последовательность (генератор), она может увеличиваться только на единицу (последовательности Firebird не имеют конфигурации, позволяющей указать увеличение значения по умолчанию):

Каждый раз, когда оператор NEXT VALUE FOR seq_name используется с этой последовательностью, его значение увеличивается на 1. Вместо этого можно вызвать функцию GEN_ID(seq_name, <step>), чтобы «шагнуть» серию на другое целое число.

Это также указывает на обходной путь: используйте устаревший gen_id с шагом больше 1:

Увеличивает генератор или последовательность и возвращает новое значение. Начиная с Firebird 2.0, предпочтительным является синтаксис NEXT VALUE FOR, совместимый с SQL, за исключением случаев, когда требуется приращение, отличное от 1.
[..]
Синтаксис:

GEN_ID (generator-name, <step>)

Другими словами: используйте GEN_ID(<sequence name>, 10) для увеличения последовательности на 10 вместо 1.

person Mark Rotteveel    schedule 23.02.2017