В этом учебном пособии вы узнаете, как создавать и удалять последовательности в SQL Server (Transact-SQL) с помощью синтаксиса и примеров.
Описание
В SQL Server вы можете создать поле autonumber с помощью последовательности. Последовательность представляет собой объект в SQL Server (Transact-SQL), который используется для генерации последовательности чисел. Это может быть полезно, когда вам нужно создать уникальный номер, чтобы использовать как первичный ключ.
Create Sequence
Вы можете создать последовательность в SQL Server для автонумерации поля.
Синтаксис
Синтаксис создания последовательности в SQL Server (Transact-SQL):
[ 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).
Например:
1 2 3 4 5 6 7 8 |
CREATE SEQUENCE contacts_seq AS BIGINT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE CACHE 10; |
Это создаст объект последовательности, называемый contact_seq. Первый порядковый номер, который будет использоваться, равен 1, и каждый последующий номер будет увеличиваться на 1 (т.е. 2,3,4, ...). Он будет кэшировать до 10 значений для производительности. Максимальное значениедля последовательности будет 99999, и последовательность не будет циклически повторяться, как только достигнет максимума.
Таким образом, вы можете упростить инструкцию CREATE SEQUENCE следующим образом:
1 2 3 |
CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1; |
Теперь, когда вы создали объект последовательности для поля autonumber, мы рассмотрим, как получить значение из этого объекта последовательности. Чтобы получить следующее значение в последовательности, вам нужно использовать команду NEXT VALUE FOR.
Например:
1 |
SELECT NEXT VALUE FOR contacts_seq; |
Это позволит получить следующее значение из последовательности contacts_seq. Оператор nextval должен использоваться в SQL предложении. Например:
1 2 3 4 |
INSERT INTO contacts (contact_id, last_name) VALUES (NEXT VALUE FOR contacts_seq, 'Tom'); |
Этот оператор INSERT вставляет новую запись в таблицу contacts. Поле contact_id будет присвоено следующее число из последовательности contacts_seq. Поле last_name будет установлено в 'Tom'.
Drop Sequence
После того, как вы создали свою последовательность в SQL Server (Transact-SQL), вам можете понадобиться удалить ее из базы данных.
Синтаксис
Синтаксис удаления последовательности в SQL Server (Transact-SQL):
sequence_name - имя последовательности, которую вы хотите удалить.
Пример
Рассмотрим пример того, как удалить последовательность в SQL Server (Transact-SQL).
Например:
1 |
DROP SEQUENCE contacts_seq; |
В этом примере будет удалена последовательность contact_seq.
Свойства последовательности
После того, как вы создали свою последовательность в SQL Server (Transact-SQL), вам может потребоваться просмотреть свойства последовательности.
Синтаксис
Синтаксис представления свойств последовательности в SQL Server (Transact-SQL):
FROM sys.sequences
WHERE name = 'sequence_name';
sequence_name - имя последовательности, для которой вы хотите просмотреть свойства.
Пример
Рассмотрим пример того, как просматривать свойства последовательности в SQL Server (Transact-SQL).
Например:
1 2 3 |
SELECT * FROM sys.sequences WHERE name = 'contacts_seq'; |
В этом примере запрашивается системное представление 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 = Нет значений в последовательности |