Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Modyfikuje argumenty istniejącego obiektu sekwencji. Jeśli sekwencja została utworzona przy użyciu CACHE opcji , zmiana sekwencji spowoduje ponowne utworzenie pamięci podręcznej.
Obiekty sekwencyjne są tworzone przy użyciu instrukcji CREATE SEQUENCE. Sekwencje są wartościami całkowitymi i mogą być dowolnym typem danych, który zwraca liczbę całkowitą. Nie można zmienić typu danych przy użyciu instrukcji ALTER SEQUENCE . Aby zmienić typ danych, upuść i utwórz obiekt sekwencji.
Sekwencja to obiekt powiązany ze schematem zdefiniowanym przez użytkownika, który generuje sekwencję wartości liczbowych zgodnie ze specyfikacją. Nowe wartości są generowane z sekwencji przez wywołanie NEXT VALUE FOR funkcji. Użyj polecenia sp_sequence_get_range , aby pobrać wiele numerów sekwencji jednocześnie. Aby uzyskać informacje i scenariusze, które używają funkcji CREATE SEQUENCE, sp_sequence_get_rangei NEXT VALUE FOR , zobacz Numery sekwencji.
Transact-SQL konwencje składni
Składnia
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 } ]
[ ; ]
Argumenty
sequence_name
Określa unikatową nazwę, za pomocą której sekwencja jest znana w bazie danych. Typem jest nazwa_systemu.
RESTART [ Z stałą <> ]
Następna wartość zwrócona przez obiekt sekwencji. Jeśli zostanie podana RESTART WITH , wartość musi być liczbą całkowitą mniejszą lub równą wartości maksymalnej lub większej lub równej minimalnej wartości obiektu sekwencji.
WITH Jeśli wartość zostanie pominięta, numerowanie sekwencji zostanie uruchomione ponownie na podstawie oryginalnych CREATE SEQUENCE opcji.
INCREMENT BY <stała>
Wartość używana do inkrementacji (lub dekrementacji, jeśli ujemna) wartość podstawowa obiektu sekwencji dla każdego wywołania NEXT VALUE FOR funkcji. Jeśli przyrost jest ujemną wartością, obiekt sekwencji jest malejący, w przeciwnym razie jest rosnąco. Przyrost nie może być 0.
[ MINVALUE <stała> | NO MINVALUE ]
Określa granice dla obiektu sekwencji. Jeśli NO MINVALUE zostanie określony, zostanie użyta minimalna możliwa wartość typu danych sekwencji.
[ STAŁA< MAXVALUE >| NO MAXVALUE ]
Określa granice dla obiektu sekwencji. Jeśli NO MAXVALUE zostanie określona, zostanie użyta maksymalna możliwa wartość typu danych sekwencji.
[ CYCLE | BRAK CYKLU ]
Ta właściwość określa, czy obiekt sekwencji powinien zostać uruchomiony ponownie z minimalnej wartości (lub maksimum dla obiektów sekwencji malejącej) lub zgłosić wyjątek w przypadku przekroczenia wartości minimalnej lub maksymalnej.
Nuta
Po wykonaniu na rowerze następnej wartości jest minimalna lub maksymalna wartość, a nie START VALUE sekwencja.
[ PAMIĘĆ PODRĘCZNA [ <stała> ] | BRAK PAMIĘCI PODRĘCZNEJ ]
Zwiększa wydajność aplikacji korzystających z obiektów sekwencji, minimalizując liczbę operacji we/wy wymaganych do utrwalania wygenerowanych wartości w tabelach systemowych.
Aby uzyskać więcej informacji na temat zachowania pamięci podręcznej, zobacz CREATE SEQUENCE .
Uwagi
Aby uzyskać informacje na temat sposobu tworzenia sekwencji i sposobu zarządzania pamięcią podręczną sekwencji, zobacz CREATE SEQUENCE.
W MINVALUE przypadku sekwencji rosnących i MAXVALUE sekwencji malejących nie można zmienić wartości, która nie zezwala na START WITH wartość sekwencji. Aby zmienić MINVALUE sekwencję rosnącą na liczbę większą niż START WITH wartość lub zmienić MAXVALUE sekwencję malejącą na liczbę mniejszą niż START WITH wartość, dołącz RESTART WITH argument, aby ponownie uruchomić sekwencję w żądanym punkcie, który mieści się w zakresie minimalnym i maksymalnym.
Metadane
Aby uzyskać informacje o sekwencjach, wykonaj zapytanie sys.sequences.
Uprawnienia
Wymaga ALTER uprawnień do sekwencji lub ALTER uprawnień w schemacie. Aby udzielić ALTER uprawnień do sekwencji, użyj ALTER ON OBJECT następującego formatu:
GRANT ALTER
ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry];
Własność obiektu sekwencji można przenieść przy użyciu instrukcji ALTER AUTHORIZATION .
Audyt
Aby przeprowadzić inspekcję ALTER SEQUENCE, monitoruj element SCHEMA_OBJECT_CHANGE_GROUP.
Przykłady
Aby zapoznać się z przykładami tworzenia sekwencji i używania funkcji do generowania NEXT VALUE FOR numerów sekwencji, zobacz Numery sekwencji.
A. Zmienianie sekwencji
Poniższy przykład tworzy schemat o nazwie Test i sekwencję o nazwie TestSeq przy użyciu int typu danych o zakresie od 100 do 200. Sekwencja rozpoczyna się od 125 i zwiększa się o 25 za każdym razem, gdy jest generowana liczba. Ponieważ sekwencja jest skonfigurowana do cyklu, gdy wartość przekracza maksymalną wartość 200, sekwencja jest uruchamiana ponownie przy minimalnej wartości 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
Poniższy przykład zmienia sekwencję TestSeq na zakres od 50 do 200. Sekwencja ponownie uruchamia serię numerowania z 100 i zwiększa się o 50 za każdym razem, gdy liczba jest generowana.
ALTER SEQUENCE Test.TestSeq
RESTART WITH 100
INCREMENT BY 50
MINVALUE 50
MAXVALUE 200
NO CYCLE
NO CACHE;
GO
Ponieważ sekwencja nie jest cyklem, NEXT VALUE FOR funkcja powoduje błąd, gdy sekwencja przekroczy 200.
B. Ponowne uruchamianie sekwencji
Poniższy przykład tworzy sekwencję o nazwie CountBy1. Sekwencja używa wartości domyślnych.
CREATE SEQUENCE Test.CountBy1;
Aby wygenerować wartość sekwencji, właściciel wykonuje następującą instrukcję:
SELECT NEXT VALUE FOR Test.CountBy1;
Zwracana wartość -9 223 372 036 854 775 808 jest najniższą możliwą wartością dla typu danych bigint. Właściciel zdaje sobie sprawę, że chce, aby sekwencja rozpoczynała się od 1, ale nie wskazywała START WITH klauzuli podczas tworzenia sekwencji. Aby naprawić ten błąd, właściciel wykonuje następującą instrukcję.
ALTER SEQUENCE Test.CountBy1
RESTART WITH 1;
Następnie właściciel ponownie wykonuje następującą instrukcję, aby wygenerować numer sekwencji.
SELECT NEXT VALUE FOR Test.CountBy1;
Liczba jest teraz 1, zgodnie z oczekiwaniami.
Sekwencja CountBy1 została utworzona przy użyciu wartości domyślnej NO CYCLE , więc przestanie działać po wygenerowaniu numeru 9,223,372,036,854,775,807. Kolejne wywołania obiektu sekwencji zwracają błąd 11728. Poniższa instrukcja zmienia obiekt sekwencji na cykl i ustawia pamięć podręczną 20.
ALTER SEQUENCE Test.CountBy1
CYCLE
CACHE 20;
Teraz, gdy obiekt sekwencji osiągnie 923 372 036 854 775 807, będzie to cykl, a następna liczba po rowerze będzie minimalną liczbą typu danych, -9,223,372,036,854,775,808.
Właściciel zdał sobie sprawę, że typ danych bigint używa 8 bajtów za każdym razem, gdy jest używany. Typ danych int, który używa 4 bajtów, jest wystarczający. Jednak nie można zmienić typu danych obiektu sekwencji. Aby zmienić typ danych na int, właściciel musi usunąć obiekt sekwencji i ponownie utworzyć obiekt z poprawnym typem danych.