Сброс последовательности SAP HANA по макс. Или макс. +1 - PullRequest
0 голосов
/ 03 сентября 2018

В SAP HANA мы используем последовательности.

Однако я не уверен, что определить для сброса

я использую select max(ID) from tbl или max(ID) + 1 from tbl?

недавно мы получили уникальное ограниченное нарушение для поля идентификатора.
И последовательность определяется как select max(ID) from tbl

Также еще лучше избегать опции "сбросить по"?

1 Ответ

0 голосов
/ 04 сентября 2018

Общая логика для предложения RESET BY заключается в проверке текущего значения (max(ID)) и добавлении смещения (например, +1), чтобы избежать двойного распределения значения ключа.

Неиспользование этой опции фактически отключает возможность автоматической установки значения текущей последовательности на значение, которое не будет конфликтовать с существующими сохраненными значениями.

Для обеспечения некоторого контекста: обычно генератор порядковых номеров использует кэш (даже если он не настроен по умолчанию) для обеспечения высокоскоростного использования порядковых номеров. В случае сбоя системы числа в кеше, которые еще не были использованы, «теряются» в том смысле, что база данных не сохраняет информацию о том, какие числа из кеша были извлечены восстановимым способом.

Используя предложение RESET BY, «потеря» чисел может быть уменьшена, когда последовательность возвращается к последнему фактически использованному порядковому номеру.

...