Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Hiermee wijzigt u de argumenten van een bestaand reeksobject. Als de reeks is gemaakt met de CACHE optie, wordt de cache opnieuw gemaakt door de reeks te wijzigen.
Reeksobjecten worden gemaakt met behulp van de instructie CREATE SEQUENCE. Reeksen zijn geheel getalwaarden en kunnen van elk gegevenstype zijn dat een geheel getal retourneert. Het gegevenstype kan niet worden gewijzigd met behulp van de ALTER SEQUENCE instructie. Als u het gegevenstype wilt wijzigen, zet u het reeksobject neer en maakt u het.
Een reeks is een door de gebruiker gedefinieerd schemagebonden object dat een reeks numerieke waarden genereert volgens een specificatie. Nieuwe waarden worden gegenereerd op basis van een reeks door de functie aan te NEXT VALUE FOR roepen. Gebruik sp_sequence_get_range dit om meerdere volgnummers tegelijk op te halen. Zie Volgnummers voor informatie en scenario's die zowel CREATE SEQUENCE, sp_sequence_get_rangeals de NEXT VALUE FOR functie gebruiken.
Transact-SQL syntaxisconventies
Syntaxis
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 } ]
[ ; ]
Argumenten
sequence_name
Hiermee geeft u de unieke naam op waarmee de reeks bekend is in de database. Type is sysname.
OPNIEUW OPSTARTEN [ MET <constante> ]
De volgende waarde die wordt geretourneerd door het reeksobject. Indien opgegeven, moet de RESTART WITH waarde een geheel getal zijn dat kleiner is dan of gelijk is aan het maximum en groter dan of gelijk aan de minimumwaarde van het reeksobject. Als de WITH waarde wordt weggelaten, wordt de volgnummering opnieuw gestart op basis van de oorspronkelijke CREATE SEQUENCE opties.
INCREMENT BY-constante <>
De waarde die wordt gebruikt om de basiswaarde van het reeksobject voor elke aanroep naar de NEXT VALUE FOR functie te verhogen (of te verlagen als negatief). Als de increment een negatieve waarde is, is het reeksobject aflopend, anders is het oplopend. De verhoging kan niet 0 zijn.
[ MINVALUE <constante> | NO MINVALUE ]
Hiermee geeft u de grenzen voor het reeksobject. Als NO MINVALUE dit is opgegeven, wordt de minimum mogelijke waarde van het gegevenstype van de reeks gebruikt.
[ MAXVALUE-constante <> | GEEN MAXVALUE ]
Hiermee geeft u de grenzen voor het reeksobject. Als NO MAXVALUE dit is opgegeven, wordt de maximaal mogelijke waarde van het gegevenstype voor de reeks gebruikt.
[ CYCLUS | GEEN CYCLUS ]
Met deze eigenschap wordt aangegeven of het reeksobject opnieuw moet worden opgestart vanaf de minimumwaarde (of het maximum voor aflopende reeksobjecten) of een uitzondering genereert wanneer de minimum- of maximumwaarde wordt overschreden.
Notitie
Na het fietsen is de volgende waarde de minimum- of maximumwaarde, niet de START VALUE reeks.
[ CACHE [ <constant> ] | GEEN CACHE ]
Verhoogt de prestaties voor toepassingen die gebruikmaken van reeksobjecten door het aantal IO's te minimaliseren dat nodig is om gegenereerde waarden voor de systeemtabellen te behouden.
Zie CREATE SEQUENCE voor meer informatie over het gedrag van de cache.
Opmerkingen
Zie CREATE SEQUENCE voor informatie over hoe reeksen worden gemaakt en hoe de reekscache wordt beheerd.
De MINVALUE voor oplopende reeksen en de MAXVALUE voor aflopende reeksen kan niet worden gewijzigd in een waarde die de START WITH waarde van de reeks niet toestaat. Als u de MINVALUE oplopende reeks wilt wijzigen in een getal dat groter is dan de START WITH waarde of als u de MAXVALUE aflopende reeks wilt wijzigen in een getal dat kleiner is dan de START WITH waarde, neemt u het RESTART WITH argument op om de reeks opnieuw te starten op een gewenst punt dat binnen het minimum- en maximumbereik valt.
Metagegevens
Voor informatie over reeksen voert u een query uit sys.sequences.
Machtigingen
Vereist ALTER toestemming voor de volgorde of ALTER machtiging voor het schema. Als u machtigingen wilt verlenen ALTER voor de reeks, gebruikt ALTER ON OBJECT u de volgende indeling:
GRANT ALTER
ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry];
Het eigendom van een reeksobject kan worden overgedragen met behulp van de ALTER AUTHORIZATION instructie.
Audit
Om te controleren ALTER SEQUENCE, controleert u de SCHEMA_OBJECT_CHANGE_GROUP.
Voorbeelden
Zie Volgnummers voor voorbeelden van het maken van reeksen en het gebruik van de NEXT VALUE FOR functie om volgnummers te genereren.
Een. Een reeks wijzigen
In het volgende voorbeeld wordt een schema gemaakt met de naam Test en een reeks met de naam TestSeq met behulp van het gegevenstype, met een bereik van 100 tot 200. De reeks begint met 125 en wordt met 25 verhoogd telkens wanneer een getal wordt gegenereerd. Omdat de reeks is geconfigureerd om te cyclusn, wordt de reeks opnieuw gestart op de minimumwaarde van 100 wanneer de waarde de maximumwaarde van 200 overschrijdt.
CREATE SCHEMA Test;
GO
CREATE SEQUENCE Test.TestSeq
AS INT
START WITH 125
INCREMENT BY 25
MINVALUE 100
MAXVALUE 200
CYCLE
CACHE 3;
GO
In het volgende voorbeeld wordt de TestSeq-reeks gewijzigd in een bereik van 50 tot 200. De reeks start de nummerreeks opnieuw op met 100 en wordt met 50 verhoogd telkens wanneer een getal wordt gegenereerd.
ALTER SEQUENCE Test.TestSeq
RESTART WITH 100
INCREMENT BY 50
MINVALUE 50
MAXVALUE 200
NO CYCLE
NO CACHE;
GO
Omdat de reeks niet wordt gecyclusd, resulteert de NEXT VALUE FOR functie in een fout wanneer de reeks groter is dan 200.
B. Een reeks opnieuw starten
In het volgende voorbeeld wordt een reeks gemaakt met de naam CountBy1. De reeks maakt gebruik van de standaardwaarden.
CREATE SEQUENCE Test.CountBy1;
Als u een reekswaarde wilt genereren, voert de eigenaar vervolgens de volgende instructie uit:
SELECT NEXT VALUE FOR Test.CountBy1;
De waarde die wordt geretourneerd van -9.223.372.036.854.775.808 is de laagst mogelijke waarde voor het bigint gegevenstype. De eigenaar realiseert zich dat de reeks moet beginnen met 1, maar heeft de component niet aangegeven START WITH toen ze de reeks maakten. Om deze fout te corrigeren, voert de eigenaar de volgende instructie uit.
ALTER SEQUENCE Test.CountBy1
RESTART WITH 1;
Vervolgens voert de eigenaar de volgende instructie opnieuw uit om een volgnummer te genereren.
SELECT NEXT VALUE FOR Test.CountBy1;
Het getal is nu 1, zoals verwacht.
De CountBy1 reeks is gemaakt met behulp van de standaardwaarde, NO CYCLE zodat deze stopt na het genereren van nummer 9.223.372.036.854.775.807. Volgende aanroepen naar het reeksobject retourneert fout 11728. Met de volgende instructie wordt het reeksobject gewijzigd om te fietsen en wordt een cache van 20 ingesteld.
ALTER SEQUENCE Test.CountBy1
CYCLE
CACHE 20;
Wanneer het reeksobject nu 9.223.372.036.854.775.807 bereikt, wordt het volgende getal na het fietsen het minimum van het gegevenstype -9.223.372.036.854.775.808.
De eigenaar besefte dat het bigint-gegevenstype 8 bytes gebruikt telkens wanneer het wordt gebruikt. Het gegevenstype dat 4 bytes gebruikt, is voldoende. Het gegevenstype van een reeksobject kan echter niet worden gewijzigd. Als u wilt overschakelen naar een gegevenstype, moet de eigenaar het reeksobject verwijderen en het object opnieuw maken met het juiste gegevenstype.
Verwante inhoud
-
CREATE SEQUENCE (Transact-SQL) - DROP SEQUENCE (Transact-SQL)
- VOLGENDE WAARDE VOOR (Transact-SQL)
- reeksnummers
- sp_sequence_get_range (Transact-SQL)