Sequences SQL Server

В этом учебном пособии вы узнаете, как создавать и удалять последовательности в SQL Server (Transact-SQL) с помощью синтаксиса и примеров.

Описание

В SQL Server вы можете создать поле autonumber с помощью последовательности. Последовательность представляет собой объект в SQL Server (Transact-SQL), который используется для генерации последовательности чисел. Это может быть полезно, когда вам нужно создать уникальный номер, чтобы использовать как первичный ключ.

Create Sequence

Вы можете создать последовательность в SQL Server для автонумерации поля.

Синтаксис

Синтаксис создания последовательности в SQL Server (Transact-SQL):

CREATE SEQUENCE [schema.]sequence_name
[ AS datatype ]
[ START WITH value ]
[ INCREMENT BY value ]
[ MINVALUE value | NO MINVALUE ]
[ MAXVALUE value | NO MAXVALUE ]
[ CYCLE | NO CYCLE ]
[ CACHE value | NO CACHE ];

Параметры или аргументы

AS datatype - это могут быть BIGINT, INT, TINYINT, SMALLINT, DECIMAL или NUMERIC. Если тип данных не указан, последовательность будет по умолчанию соответствовать типу BIGINT.
START WITH value - начальное значение последовательности.
INCREMENT BY value - это может быть либо положительное, либо отрицательное значение. Если задано положительное значение, последовательность будет восходящей последовательностью значений. Если указано отрицательное значение, последовательность будет нисходящей последовательностью значений.
MINVALUE value - минимальное значение, допустимое для последовательности.
NO MINVALUE - это означает, что для последовательности не существует минимального значения.
MAXVALUE value - максимальное допустимое значение для последовательности.
NO MAXVALUE - это означает, что для последовательности не существует максимального значения.
CYCLE - это означает, что последовательность начнется, как только она завершит последовательность.
NO CYCLE - это означает, что последовательность вызовет ошибку, когда она завершится. И не будет запускать последовательность заново.
CACHE value - кэширует порядковые номера, чтобы минимизировать диск IO.
NO CACHE - не кэширует порядковые номера.

Пример

Рассмотрим пример создания последовательности в SQL Server (Transact-SQL).
Например:

Это создаст объект последовательности, называемый contact_seq. Первый порядковый номер, который будет использоваться, равен 1, и каждый последующий номер будет увеличиваться на 1 (т.е. 2,3,4, ...). Он будет кэшировать до 10 значений для производительности. Максимальное значениедля последовательности будет 99999, и последовательность не будет циклически повторяться, как только достигнет максимума.
Таким образом, вы можете упростить инструкцию CREATE SEQUENCE следующим образом:

Теперь, когда вы создали объект последовательности для поля autonumber, мы рассмотрим, как получить значение из этого объекта последовательности. Чтобы получить следующее значение в последовательности, вам нужно использовать команду NEXT VALUE FOR.
Например:

Это позволит получить следующее значение из последовательности contacts_seq. Оператор nextval должен использоваться в SQL предложении. Например:

Этот оператор INSERT вставляет новую запись в таблицу contacts. Поле contact_id будет присвоено следующее число из последовательности contacts_seq. Поле last_name будет установлено в 'Tom'.

Drop Sequence

После того, как вы создали свою последовательность в SQL Server (Transact-SQL), вам можете понадобиться удалить ее из базы данных.

Синтаксис

Синтаксис удаления последовательности в SQL Server (Transact-SQL):

DROP SEQUENCE sequence_name;

sequence_name - имя последовательности, которую вы хотите удалить.

Пример

Рассмотрим пример того, как удалить последовательность в SQL Server (Transact-SQL).
Например:

В этом примере будет удалена последовательность contact_seq.

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

После того, как вы создали свою последовательность в SQL Server (Transact-SQL), вам может потребоваться просмотреть свойства последовательности.

Синтаксис

Синтаксис представления свойств последовательности в SQL Server (Transact-SQL):

SELECT *
FROM sys.sequences
WHERE name = 'sequence_name';

sequence_name - имя последовательности, для которой вы хотите просмотреть свойства.

Пример

Рассмотрим пример того, как просматривать свойства последовательности в SQL Server (Transact-SQL).
Например:

В этом примере запрашивается системное представление sys.sequences и извлекается информация для последовательности contact_seq.
В представлении sys.sequences содержатся следующие столбцы:

Колонки Пояснение
name Имя последовательности, которое было присвоено в операторе CREATE SEQUENCE
object_id ID объекта
principal_id Владелец последовательности
schema_id Идентификатор схемы, в котором была создана последовательность
parent_object_id Идентификатор родительского объекта
type Тип
type_desc SEQUENCE_OBJECT
create_date Дата / время создания последовательности
modify_date Дата / время, когда последняя модификация была изменена
is_ms_shipped 0 или 1
is_published 0 или 1
is_schema_published 0 или 1
start_value Начальное значение для последовательности
increment Значение, используемое для увеличения последовательности
minimum_value Минимальное значение, допустимое для последовательности
maximum_value Максимальное допустимое значение для последовательности
is_cycling 0 или 1. 0 = НЕТ ЦИКЛА, 1 = ЦИКЛ
is_cached 0 или 1, 0 = NO CACHE, 1 = CACHE
cache_size Размер кеша, если is_cached = 1
system_type_id Идентификатор типа системы для последовательности
user_type_id Идентификатор типа пользователя для последовательности
precision Максимальная точность для типа данных последовательности
scale Максимальная шкала для типа данных последовательности
current_value Последнее значение, возвращаемое последовательностью
is_exhausted 0 или 1. 0 = Больше значений, доступных в последовательности. 1 = Нет значений в последовательности