Какова цель MAXVALUE последовательности Oracle? - PullRequest
0 голосов
/ 27 мая 2018

Документация понятна:

MAXVALUE: укажите максимальное значение, которое может генерировать последовательность.

И сообщение об ошибке также ясно:

CREATE SEQUENCE smax START WITH 1 MAXVALUE 2;

SELECT smax.nextval FROM dual;
1

SELECT smax.nextval FROM dual;
2

SELECT smax.nextval FROM dual;
ORA-08004: SEQUENCE SMAX.NEXTVAL exceeds MAXVALUE and cannot be instantiated

Но какова цель из MAXVALUE?Кто-нибудь когда-либо использовал это в производственных целях?Из многих последовательностей, которые я видел, MAXVALUE либо не используется, либо имеет произвольно высокое значение, которое казалось достаточно высоким, чтобы его никогда не достичь.

Комбинация MINVALUE, MAXVALUE иCYCLE имеет смысл, однако, но встречается ли он в дикой природе, то есть кто-то на самом деле его использует?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Это часть стандарта SQL 2003 года, так что на самом деле это не вопрос Oracle.

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

Может быть физический предел (например, значение должно соответствовать 6 цифрам) или предел, налагаемый на преобразование (например, должен соответствовать два байта).Всякий раз, когда я работал с системой с таким ограничением, мы избегали последовательностей, поскольку мы не хотим, чтобы любые неиспользованные цифры терялись из-за кеширования, неудачных транзакций и т. Д.

0 голосов
/ 27 мая 2018

Один из вариантов использования порядковых номеров может состоять в том, чтобы иметь уникальный идентификатор, который может использоваться приложением (например, порядковый номер вместе с юлианской датой для генерации ключа журнала). Чтобы минимизировать коллизию чисел, у нас будетбольшое число, установленное для MAXVALUE

Без значения MAXVALUE последовательность будет продолжать увеличиваться, а с установленным значением она будет циклически проходить после достижения значения MAXVALUE.

Example: 
    START WITH 1
    INCREMENT BY 10
    MAXVALUE 100
the Sequence would go back to 1 once it reaches the value 91 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...