Увеличение последовательности на 50 вместо 1 - PullRequest
4 голосов
/ 29 мая 2011

Я создал последовательность Oracle:

Создать последовательность seq_acteurs начинается с 1 приращения на 1;

Обычно последовательность должна увеличиваться на 1, но при вставке в таблицу Acteursпоследовательность s увеличена на 50!Это не кажется логичным.Почему это так?

Любая помощь будет высоко ценится.

Ответы [ 3 ]

3 голосов
/ 29 мая 2011

Порядковые номера не выбираются по одному, когда они вам нужны. Как правило, БД кэширует определенное количество порядковых номеров в памяти. Когда все кэшированные последовательности израсходованы, БД извлекает новый блок порядковых номеров в кэш. Теперь, если по какой-то причине происходит сбой БД, а в кеше все еще есть неиспользуемые числа, в ваших порядковых номерах могут быть пробелы.

3 голосов
/ 29 мая 2011

Последовательности не гарантирует, что они генерируют последовательность чисел без пробелов.

Вы можете минимизировать разрывы, указав nocache, но это по-прежнему не гарантирует последовательности без пробелов и может создать конфликт ресурсов.

Пример из документации :

СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ НАЧАТЬ С 1000 УВЕЛИЧЕНИЕ НА 1 NOCACHE NOCYCLE;

0 голосов
/ 24 октября 2016

В вашем классе сущностей добавьте это и увеличите на 1

allocationSize=1

, это пример:

@SequenceGenerator(name = "ECP_EVALUACION_SEQ", sequenceName = "SCORTN.ECP_EVALUACION_SEQ",allocationSize=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...