Использование последовательностей

Обращение к последовательности осуществляется в предложениях SQL через методы NEXTVAL и CURRVAL; каждый новый номер данной последовательности генерируется обращением к методу NEXTVAL, тогда как текущий номер последовательности можно извлекать неоднократно путем обращения к методу CURRVAL.

Например, используя созданную ранее последовательность ST_Hobby можно при добавлении строки в таблицу ST_Hobby задать номер для идентификатора N_n:

INSERT INTO ST_Hobby(N_n, N_z)

VALUES (ST_Hobby.NEXTVAL, 12345);

Использование метода CURRVAL последовательности возможно только внутри одной транзакции с методом NEXTVAL. Это правило обусловлено необходимостью обеспечения целостности базы данных. Действительно, если представить, что существует последовательность, разделяемая между несколькими пользователями, то использование метода CURRVAL не будет ничем отличаться от использования запроса на получение максимального идентификатора. По этой причине текущее значение последовательности для каждого пользователя, воспользовавшегося одной и той же последовательностью, будет разным.

Чаще всего метод CURRVAL используется тогда, когда необходимо внутри одной транзакции добавить связанную по полю идентификатора информацию и в главную таблицу, и в зависимую.

Методы последовательностей NEXTVAL и CURRVAL могут использоваться в следующих местах:

ü в фразе VALUES предложения INSERT;

ü в списке SELECT предложения SELECT;

ü в фразе SET предложения UPDATE.

Методы последовательностей NEXTVAL и CURRVAL не могут использоваться в следующих местах:

ü в подзапросе;

ü в запросе, определяющем представление;

ü в предложении SELECT с оператором DISTINCT;

ü в предложении SELECT с фразой GROUP BY или ORDER BY;

ü в предложении SELECT, скомбинированном с другим предложением SELECT одним из операторов множеств UNION, INTERSECT или MINUS;

ü в фразе WHERE предложения SELECT;

ü в выражении DEFAULT для столбца в предложении CREATE TABLE или ALTER TABLE;

ü в условии ограничения CHECK.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: