Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости
Новое

Кэширование значений последовательности

Кэширование значений последовательностиПо умолчанию Oracle кэширует 20 последовательных значений в памяти для ускорения к ним доступа. Такой режим можно изменить, явно указав в предложении CACHE количество кэшируемых значений, либо вообще отменив кэширование (NOCACHE). В противном случае значения в памяти будут стерты, к примеру, при перезапуске базы данных. Если нужно обеспечить генерирование последовательных значений (к примеру, для использования в штампах времени), необходимо определить предложение ORDER. По умолчанию порядок не гарантируется (NOORDER). Этот параметр не имеет отношения к тематике настоящей книгиВ предыдущем примере использована фиктивная таблица dual, которую в Oracle применяют для выбора значений “из ничего”. Более подробно речь о ней пойдет в главе 10.

Для доступа к значению currval нужно в текущей сессии сгенерировать последовательное значение хотя бы раз, в противном случае будет вызвана ошибка. В некотором роде значение prevval более точное — обращение всегда выполняется к предыдущему сгенерированному значению. Таким образом, синтаксис практически идентичен Oracle, так что все примеры, приведенные в предыдущем разделе, применимы и к DB2. Существует всего два незначительных отличия. Если в последовательности нужно использовать точные числа, необходимо определить тип LONG (по умолчанию используется INTEGER). Если определить тип данных DECIMAL, масштаб будет нулевым. В Oracle же всегда предполагается тип NUMBER. В DB2 можно создавать статические последовательности (которые всегда будут генерировать одно и то же число) либо задав параметр INCREMENT BY 0, либо установив одинаковые значения в параметрах MINVALUE и MAXVALUE. В Oracle же требуется, чтобы шаг приращения был положительным или отрицательным целым числом — нуль не допускается; а значение MAXVALUE должно быть всегда строго больше MINVALUE.