Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Изменяет аргументы существующего объекта последовательности. Если последовательность была создана с параметром CACHE , изменение последовательности повторно создает кэш.
Объекты последовательностей создаются с помощью инструкции CREATE SEQUENCE. Последовательность — это целочисленное значение, она может иметь любой тип данных, возвращающий целое число. Тип данных нельзя изменить с помощью инструкции ALTER SEQUENCE . Чтобы изменить тип данных, удалите и заново создайте объект последовательности.
Последовательность представляет собой определяемый пользователем объект, привязанный к схеме, который формирует последовательность числовых значений в соответствии со спецификацией. Новые значения создаются из последовательности путем вызова NEXT VALUE FOR функции. Используется sp_sequence_get_range для одновременного получения нескольких порядковых номеров. Сведения и сценарии, использующие оба CREATE SEQUENCEпараметра sp_sequence_get_range, и функцию NEXT VALUE FOR , см. в разделе "Порядковые номера".
Соглашения о синтаксисе Transact-SQL
Синтаксис
ALTER SEQUENCE [ schema_name. ] sequence_name
[ RESTART [ WITH <constant> ] ]
[ INCREMENT BY <constant> ]
[ { MINVALUE <constant> } | { NO MINVALUE } ]
[ { MAXVALUE <constant> } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
Аргументы
sequence_name
Указывает уникальное имя, под которым последовательность известна в базе данных. Тип sysname.
ПЕРЕЗАПУСК [ КОНстанта< WITH >]
Следующее значение, возвращаемое объектом последовательности. Если это указано, RESTART WITH значение должно быть целым числом, которое меньше или равно максимальному и большему или равно минимальному значению объекта последовательности.
WITH Если значение опущено, нумерование последовательности перезапускается на основе исходных CREATE SEQUENCE параметров.
Константа INCREMENT BY <>
Значение, используемое для увеличения (или уменьшения, если отрицательное) базового значения объекта последовательности для каждого вызова NEXT VALUE FOR функции. Если приращение является отрицательным значением, то объект последовательности убывается, в противном случае он возрастает. Приращение не может быть 0.
[ константы< MINVALUE >| NO MINVALUE ]
Указывает граничные значения для объекта последовательности. Если NO MINVALUE задано, используется минимальное возможное значение типа данных последовательности.
[ константы< MAXVALUE >| NO MAXVALUE ]
Указывает граничные значения для объекта последовательности. Если NO MAXVALUE задано, используется максимально возможное значение типа данных последовательности.
[ ЦИКЛ | НЕТ ЦИКЛА ]
Это свойство указывает, должен ли объект последовательности перезапуститься из минимального значения (или максимума для объектов последовательности убывания) или исключение при превышении минимального или максимального значения.
Примечание.
После велоспорта следующее значение является минимальным или максимальным, а не START VALUE последовательностью.
[ КЭШ [ <константа> ] | НЕТ КЭША ]
Повышает производительность для приложений, использующих объекты последовательностей, сводя к минимуму число операций ввода-вывода, которые требуются для сохранения сформированных значений в системных таблицах.
Дополнительные сведения о поведении кэша см. в разделе CREATE SEQUENCE.
Замечания
Сведения о том, как создаются последовательности и как управляется кэш последовательности, см. в статье CREATE SEQUENCE.
Для MINVALUE последовательностей возрастания и MAXVALUE убывающих последовательностей нельзя изменить на значение, которое не разрешает START WITH значение последовательности. Чтобы изменить MINVALUE по возрастанию последовательность на число, превышающее значение, или изменить START WITH убывающую последовательность на число меньшее, чем MAXVALUESTART WITH значение, добавьте RESTART WITH аргумент для перезапуска последовательности в нужной точке, которая попадает в минимальный и максимальный диапазон.
Метаданные
Чтобы получить сведения о последовательностях, запросите представление sys.sequences.
Разрешения
Требуется ALTER разрешение на последовательность или ALTER разрешение схемы. Чтобы предоставить ALTER разрешение на последовательность, используйте ALTER ON OBJECT следующий формат:
GRANT ALTER
ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry];
Владение объектом последовательности можно передать с помощью инструкции ALTER AUTHORIZATION .
Audit
Для аудита ALTER SEQUENCEотслеживайте SCHEMA_OBJECT_CHANGE_GROUP.
Примеры
Примеры создания последовательностей и использования NEXT VALUE FOR функции для создания номеров последовательностей см. в разделе "Порядковые номера".
А. Изменение последовательности
В приведенном ниже примере создается схема Test и последовательность TestSeq с типом данных int, имеющим диапазон от 100 до 200. Последовательность начинается со 125 и увеличивается на 25 при каждом создании номера. Так как последовательность настроена на цикл, если значение превышает максимальное значение 200, последовательность перезапускается по минимальному значению 100.
CREATE SCHEMA Test;
GO
CREATE SEQUENCE Test.TestSeq
AS INT
START WITH 125
INCREMENT BY 25
MINVALUE 100
MAXVALUE 200
CYCLE
CACHE 3;
GO
В приведенном ниже примере последовательность TestSeq изменяется для работы в диапазоне от 50 до 200. Последовательность перезапускает нумерацию рядов со 100 с увеличением на 50 при каждом формировании номера.
ALTER SEQUENCE Test.TestSeq
RESTART WITH 100
INCREMENT BY 50
MINVALUE 50
MAXVALUE 200
NO CYCLE
NO CACHE;
GO
Так как последовательность не циклирует, NEXT VALUE FOR функция приводит к ошибке, если последовательность превышает 200.
B. Перезапуск последовательности
В следующем примере создается последовательность с именем CountBy1. В ней используются значения по умолчанию.
CREATE SEQUENCE Test.CountBy1;
Для формирования значения последовательности ее владелец выполняет следующую инструкцию:
SELECT NEXT VALUE FOR Test.CountBy1;
Возвращенное значение -9 223 372 036 854 775 808 — это наименьшее возможное значение для типа данных bigint. Владелец понимает, что он хотел начать последовательность с 1, но не указал START WITH предложение при создании последовательности. Чтобы исправить эту ошибку, владелец выполняет следующую инструкцию.
ALTER SEQUENCE Test.CountBy1
RESTART WITH 1;
Затем он снова выполняет следующую инструкцию для формирования последовательного номера.
SELECT NEXT VALUE FOR Test.CountBy1;
Это номер 1, как и ожидалось.
Последовательность CountBy1 была создана с помощью значения NO CYCLE по умолчанию, поэтому она перестанет работать после создания номера 9223 372 036 854 775 807. Последующие вызовы объекта последовательности возвращают ошибку 11728. Следующая инструкция включает зацикливание для объекта и устанавливают его кэш в значение 20.
ALTER SEQUENCE Test.CountBy1
CYCLE
CACHE 20;
Теперь, когда будет достигнут номер 9 223 372 036 854 775 807, следующим номером будет минимально возможный для этого типа данных — -9 223 372 036 854 775 808.
Владелец понял, что тип данных bigint использует 8 байт при каждом использовании. Типа данных int, занимающего 4 байта, будет достаточно. Однако тип данных объекта последовательности не может быть изменен. Чтобы изменить тип данных на int, он должен удалить объект последовательности и создать его заново с нужным типом данных.