CREATE SEQUENCE (Transact-SQL)CREATE SEQUENCE (Transact-SQL)

Gilt für: JaSQL Server JaAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Erstellt ein Sequenzobjekt und gibt dessen Eigenschaften an.Creates a sequence object and specifies its properties. Als Sequenz wird ein benutzerdefiniertes schemagebundenes Objekt bezeichnet, das eine Sequenz numerischer Werte anhand der Spezifikation generiert, mit der die Sequenz erstellt wurde.A sequence is a user-defined schema bound object that generates a sequence of numeric values according to the specification with which the sequence was created. Die Sequenz numerischer Werte wird in aufsteigender oder absteigender Reihenfolge in einem definierten Intervall generiert und kann so konfiguriert werden, dass sie beim Erreichen des Endes neu gestartet wird (Zyklus).The sequence of numeric values is generated in an ascending or descending order at a defined interval and can be configured to restart (cycle) when exhausted. Sequenzen werden anders als Identitätsspalten keinen bestimmten Tabellen zugeordnet.Sequences, unlike identity columns, are not associated with specific tables. Anwendungen verweisen auf ein Sequenzobjekt, um dessen nächsten Wert abzurufen.Applications refer to a sequence object to retrieve its next value. Die Beziehung zwischen Sequenzen und Tabellen wird von der Anwendung gesteuert.The relationship between sequences and tables is controlled by the application. Benutzeranwendungen können auf ein Sequenzobjekt verweisen und die Werte in mehreren Zeilen und Tabellen koordinieren.User applications can reference a sequence object and coordinate the values across multiple rows and tables.

Im Unterschied zu Identitätsspaltenwerten, die beim Einfügen von Zeilen generiert werden, kann eine Anwendung durch Aufrufen der NEXT VALUE FOR-Funktion die nächste Sequenznummer abrufen, ohne die Zeile einzufügen.Unlike identity columns values that are generated when rows are inserted, an application can obtain the next sequence number without inserting the row by calling the NEXT VALUE FOR function. Mit sp_sequence_get_range können Sie mehrere Sequenznummern gleichzeitig abrufen.Use sp_sequence_get_range to get multiple sequence numbers at once.

Informationen und Szenarien, in denen die CREATE SEQUENCE -Funktion und die NEXT VALUE FOR -Funktion verwendet werden, finden Sie unter Sequenznummern.For information and scenarios that use both CREATE SEQUENCE and the NEXT VALUE FOR function, see Sequence Numbers.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

CREATE SEQUENCE [schema_name . ] sequence_name  
    [ AS [ built_in_integer_type | user-defined_integer_type ] ]  
    [ START WITH <constant> ]  
    [ INCREMENT BY <constant> ]  
    [ { MINVALUE [ <constant> ] } | { NO MINVALUE } ]  
    [ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ]  
    [ CYCLE | { NO CYCLE } ]  
    [ { CACHE [ <constant> ] } | { NO CACHE } ]  
    [ ; ]  

ArgumenteArguments

sequence_namesequence_name
Gibt den eindeutigen Namen der Sequenz in der Datenbank an.Specifies the unique name by which the sequence is known in the database. Der Typ ist sysname.Type is sysname.

[ built_in_integer_type | user-defined_integer_type[ built_in_integer_type | user-defined_integer_type
Eine Sequenz kann als beliebiger ganzzahliger Typ definiert werden.A sequence can be defined as any integer type. Die folgenden Typen sind zulässig.The following types are allowed.

  • tinyint: von 0 bis 255tinyint - Range 0 to 255
  • smallint: von –32.768 bis 32.767smallint - Range -32,768 to 32,767
  • int: von –2.147.483.648 bis 2.147.483.647int - Range -2,147,483,648 to 2,147,483,647
  • bigint: von –9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807bigint - Range -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
  • decimal und numeric mit einem Bereich von 0.decimal and numeric with a scale of 0.
  • Ein beliebiger benutzerdefinierter Datentyp (Aliastyp), der auf einem der zulässigen Typen basiert.Any user-defined data type (alias type) that is based on one of the allowed types.

Wird kein Datentyp bereitgestellt, wird der bigint-Datentyp als Standardtyp verwendet.If no data type is provided, the bigint data type is used as the default.

START WITH <constant>START WITH <constant>
Der erste Wert, der vom Sequenzobjekt zurückgegeben wird.The first value returned by the sequence object. Der START-Wert muss kleiner oder gleich dem maximalen und größer oder gleich dem minimalen Wert des Sequenzobjekts sein.The START value must be a value less than or equal to the maximum and greater than or equal to the minimum value of the sequence object. Der Standardstartwert eines neuen Sequenzobjekts ist gleich dem minimalen Wert eines aufsteigenden Sequenzobjekts und dem maximalen Wert eines absteigenden Sequenzobjekts.The default start value for a new sequence object is the minimum value for an ascending sequence object and the maximum value for a descending sequence object.

INCREMENT BY <constant>INCREMENT BY <constant>
Der Wert, mit dem der Wert des Sequenzobjekts bei jedem Aufruf der NEXT VALUE FOR-Funktion inkrementiert (oder bei negativem Wert dekrementiert) wird.Value used to increment (or decrement if negative) the value of the sequence object for each call to the NEXT VALUE FOR function. Wenn als Inkrement ein negativer Wert verwendet wird, ist der Wert des Sequenzobjekts absteigend, andernfalls ist er aufsteigend.If the increment is a negative value, the sequence object is descending; otherwise, it is ascending. Das Inkrement kann nicht 0 sein.The increment cannot be 0. Das Standardinkrement für ein neues Sequenzobjekt ist 1.The default increment for a new sequence object is 1.

[ MINVALUE <constant> | NO MINVALUE ][ MINVALUE <constant> | NO MINVALUE ]
Gibt die Grenzen für das Sequenzobjekt an.Specifies the bounds for the sequence object. Der minimale Standardwert eines neuen Sequenzobjekts ist gleich dem minimalen Wert für den Datentyp des Sequenzobjekts.The default minimum value for a new sequence object is the minimum value of the data type of the sequence object. Dieser ist für den tinyint -Datentyp 0 und für alle anderen Datentypen eine negative Zahl.This is zero for the tinyint data type and a negative number for all other data types.

[ MAXVALUE <constant> | NO MAXVALUE[ MAXVALUE <constant> | NO MAXVALUE
Gibt die Grenzen für das Sequenzobjekt an.Specifies the bounds for the sequence object. Der maximale Standardwert eines neuen Sequenzobjekts ist gleich dem maximalen Wert für den Datentyp des Sequenzobjekts.The default maximum value for a new sequence object is the maximum value of the data type of the sequence object.

[ CYCLE | NO CYCLE ][ CYCLE | NO CYCLE ]
Eigenschaft, die angibt, ob das Sequenzobjekt vom minimalen Wert (oder bei absteigenden Sequenzobjekten vom maximalen Wert) neu gestartet oder ob eine Ausnahme ausgelöst werden soll, wenn der minimale oder maximale Wert überschritten wird.Property that specifies whether the sequence object should restart from the minimum value (or maximum for descending sequence objects) or throw an exception when its minimum or maximum value is exceeded. Die Standardzyklusoption für neue Sequenzobjekte ist NO CYCLE.The default cycle option for new sequence objects is NO CYCLE.

Hinweis

Der Durchlauf einer SEQUENCE startet ab dem minimalen oder maximalen Wert neu, und nicht ab dem Startwert.Cycling a SEQUENCE restarts from the minimum or maximum value, not from the start value.

[ CACHE [<constant> ] | NO CACHE ][ CACHE [<constant> ] | NO CACHE ]
Erhöht die Leistung für Anwendungen, die Sequenzobjekte verwenden, indem die Anzahl der Datenträger-E/As verringert wird, die zum Generieren von Sequenznummern erforderlich sind.Increases performance for applications that use sequence objects by minimizing the number of disk IOs that are required to generate sequence numbers. Der Standardwert ist CACHE.Defaults to CACHE.

Wenn beispielsweise die Cachegröße 50 ausgewählt wird, werden in SQL ServerSQL Server nicht 50 einzelne Werte zwischengespeichert.For example, if a cache size of 50 is chosen, SQL ServerSQL Server does not keep 50 individual values cached. Es werden lediglich der aktuelle Wert und die Anzahl der im Cache verbleibenden Werte zwischengespeichert.It only caches the current value and the number of values left in the cache. Daher ist der zum Speichern des Caches erforderliche Arbeitsspeicher immer doppelt so groß wie zwei Instanzen des Sequenzobjekt-Datentyps.This means that the amount of memory required to store the cache is always two instances of the data type of the sequence object.

Hinweis

Wenn die Cacheoption aktiviert wird, ohne eine Cachegröße anzugeben, wählt die Datenbank-Engine eine Größe aus.If the cache option is enabled without specifying a cache size, the Database Engine will select a size. Benutzer sollten sich jedoch nicht darauf verlassen, dass die Auswahl konsistent ist.However, users should not rely upon the selection being consistent. MicrosoftMicrosoft könnte die Methode zur Berechnung der Cachegröße ohne vorherige Ankündigung ändern.might change the method of calculating the cache size without notice.

Bei Erstellung mit der CACHE-Option kann ein unerwartetes Herunterfahren (z.B. durch einen Stromausfall) möglicherweise zum Verlust der im Cache verbleibenden Sequenznummern führen.When created with the CACHE option, an unexpected shutdown (such as a power failure) may result in the loss of sequence numbers remaining in the cache.

Allgemeine HinweiseGeneral Remarks

Sequenznummern werden außerhalb des Bereichs der aktuellen Transaktion generiert.Sequence numbers are generated outside the scope of the current transaction. Sie werden unabhängig davon genutzt, ob ein Commit oder ein Rollback für die Transaktion ausgeführt wird, die die Sequenznummer verwendet.They are consumed whether the transaction using the sequence number is committed or rolled back. Die doppelte Überprüfung tritt nur auf, wenn ein Datensatz vollständig gefüllt ist.Duplicate validation only occurs once a record is fully populated. Dies kann in manchen Fällen dazu führen, dass die gleiche Nummer bei der Erstellung für mehr als einen Datensatz verwendet, dann aber als Duplikat identifiziert wird.This can result in some cases where the same number is used for more than one record during creation, but then gets identified as a duplicate. Wenn dies auftritt und andere automatisch nummerierten Werte auf nachfolgende Datensätze angewendet wurden, kann dies möglicherweise zu einer Lücke zwischen automatisch nummerierten Werten und dem erwarteten Verhalten führen.If this occurs and other autonumber values have been applied to subsequent records, this can result in a gap between autonumber values and is expected behavior.

CacheverwaltungCache management

Um die Leistung zu verbessern, ordnet SQL ServerSQL Server die Anzahl der durch das CACHE-Argument angegebenen Sequenznummern zu.To improve performance, SQL ServerSQL Server pre-allocates the number of sequence numbers specified by the CACHE argument.

Beispielsweise wird eine neue Sequenz mit dem Startwert 1 und einer Cachegröße von 15 erstellt.For an example, a new sequence is created with a starting value of 1 and a cache size of 15. Wenn der erste Wert benötigt wird, werden die Werte 1 bis 15 vom Arbeitsspeicher verfügbar gemacht.When the first value is needed, values 1 through 15 are made available from memory. Der letzte zwischengespeicherte Wert (15) wird in die Systemtabellen auf dem Datenträger geschrieben.The last cached value (15) is written to the system tables on the disk. Wenn alle 15 Zahlen verwendet werden, verursacht die nächste Anforderung (für den Wert 16), dass der Cache erneut zugeordnet wird.When all 15 numbers are used, the next request (for number 16) will cause the cache to be allocated again. Der neue zuletzt zwischengespeicherte Wert (30) wird in die Systemtabellen geschrieben.The new last cached value (30) will be written to the system tables.

Wenn Datenbank-EngineDatabase Engine nach der Verwendung von 22 Zahlen beendet wird, wird die nächste beabsichtigte Sequenznummer im Arbeitsspeicher (23) in die Systemtabellen geschrieben und ersetzt die zuvor gespeicherte Zahl.If the Datenbank-EngineDatabase Engine is stopped after you use 22 numbers, the next intended sequence number in memory (23) is written to the system tables, replacing the previously stored number.

Nachdem SQL Server neu gestartet wurde und eine Sequenznummer benötigt wird, wird die Startzahl aus den Systemtabellen (23) gelesen.After SQL Server restarts and a sequence number is needed, the starting number is read from the system tables (23). Die Cacheanzahl von 15 Zahlen (23 - 38) wird dem Arbeitsspeicher zugeordnet, und die nächste Nicht-Cache-Zahl (39) wird in die Systemtabellen geschrieben.The cache amount of 15 numbers (23-38) is allocated to memory and the next non-cache number (39) is written to the system tables.

Wenn Datenbank-EngineDatabase Engine bei einem Ereignis unerwartet beendet wird, z.B. bei einem Stromausfall, startet die Sequenz mit der aus den Systemtabellen gelesenen Zahl (39) neu.If the Datenbank-EngineDatabase Engine stops abnormally for an event such as a power failure, the sequence restarts with the number read from system tables (39). Alle dem Arbeitsspeicher zugeordneten Sequenznummern (die nie von einem Benutzer oder einer Anwendung angefordert wurden) gehen verloren.Any sequence numbers allocated to memory (but never requested by a user or application) are lost. Diese Funktion verursacht möglicherweise Lücken, garantiert aber, dass ein Wert nie zweimal für ein einzelnes Sequenzobjekt ausgegeben wird, sofern er nicht als CYCLE definiert ist oder manuell neu gestartet wird.This functionality may leave gaps, but guarantees that the same value will never be issued two times for a single sequence object unless it is defined as CYCLE or is manually restarted.

Der Cache wird im Arbeitsspeicher verwaltet, indem der aktuelle Wert (der letzte ausgegebene Wert) und die Anzahl der Werte im Cache nachverfolgt werden.The cache is maintained in memory by tracking the current value (the last value issued) and the number of values left in the cache. Daher ist der vom Cache verwendete Arbeitsspeicher immer doppelt so groß wie zwei Instanzen des Sequenzobjekt-Datentyps.Therefore, the amount of memory used by the cache is always two instances of the data type of the sequence object.

Wenn das CACHE-Argument auf NO CACHE festgelegt wird, wird der aktuelle Sequenzwert bei jeder Verwendung einer Sequenz in die Systemtabellen geschrieben.Setting the cache argument to NO CACHE writes the current sequence value to the system tables every time that a sequence is used. Dies könnte die Leistung verlangsamen, da der Datenträgerzugriff erhöht wird. Die Möglichkeit unbeabsichtigter Lücken wird aber verringert.This might slow performance by increasing disk access, but reduces the chance of unintended gaps. Lücken können weiterhin auftreten, wenn Zahlen mit der NEXT VALUE FOR-Funktion oder der sp_sequence_get_range-Funktion angefordert werden. In diesem Fall werden die Zahlen aber entweder gar nicht oder nur in Transaktionen verwendet, für die kein Commit ausgeführt wurde.Gaps can still occur if numbers are requested using the NEXT VALUE FOR or sp_sequence_get_range functions, but then the numbers are either not used or are used in uncommitted transactions.

Wenn ein Sequenzobjekt die CACHE-Option verwendet, wird der Cache in die Systemtabellen geschrieben, bevor die Änderung übernommen wird,wenn Sie das Sequenzobjekt neu starten oder INCREMENT, CYCLE, MINVALUE, MAXVALUE oder die Eigenschaften der Cachegröße ändern.When a sequence object uses the CACHE option, if you restart the sequence object, or alter the INCREMENT, CYCLE, MINVALUE, MAXVALUE, or the cache size properties, it will cause the cache to be written to the system tables before the change occurs. Dann wird der Cache erneut geladen, wobei mit dem aktuellen Wert begonnen wird (d. h., es werden keine Zahlen übersprungen).Then the cache is reloaded starting with the current value (i.e. no numbers are skipped). Die Änderung der Cachegröße wird sofort wirksam.Changing the cache size takes effect immediately.

CACHE-Option, wenn zwischengespeicherte Werte verfügbar sindCACHE option when cached values are available

Der folgende Prozess tritt immer dann auf, wenn von einem Sequenzobjekt angefordert wird, den nächsten Wert für die CACHE-Option zu erstellen, wenn im In-Memory-Cache für das Sequenzobjekt nicht verwendete Werte verfügbar sind.The following process occurs every time that a sequence object is requested to generate the next value for the CACHE option if there are unused values available in the in-memory cache for the sequence object.

  1. Der nächste Wert für das Sequenzobjekt wird berechnet.The next value for the sequence object is calculated.

  2. Der neue aktuelle Wert für das Sequenzobjekt wird im Arbeitsspeicher aktualisiert.The new current value for the sequence object is updated in memory.

  3. Der berechnete Wert wird an die aufrufende Anweisung zurückgegeben.The calculated value is returned to the calling statement.

CACHE-Option, wenn kein Platz im Cache mehr verfügbar istCACHE option when the cache is exhausted

Der folgende Prozess tritt immer dann auf, wenn von einem Sequenzobjekt angefordert wird, den nächsten Wert für die CACHE-Option zu generieren, wenn im Cache kein Platz mehr vorhanden ist:The following process occurs every time a sequence object is requested to generate the next value for the CACHE option if the cache has been exhausted:

  1. Der nächste Wert für das Sequenzobjekt wird berechnet.The next value for the sequence object is calculated.

  2. Der letzte Wert für den neuen Cache wird berechnet.The last value for the new cache is calculated.

  3. Die Systemtabellenzeile für das Sequenzobjekt wird gesperrt, und der in Schritt 2 berechnete Wert (der letzte Wert) wird in die Systemtabelle geschrieben.The system table row for the sequence object is locked, and the value calculated in step 2 (the last value) is written to the system table. Ein cache-exhausted-Xevent wird ausgelöst, um den Benutzer über den neuen beibehaltenen Wert zu benachrichtigen.A cache-exhausted xevent is fired to notify the user of the new persisted value.

NO CACHE-OptionNO CACHE option

Der folgende Prozess tritt immer dann auf, wenn von einem Sequenzobjekt angefordert wird, den nächsten Wert für die NO CACHE-Option zu generieren:The following process occurs every time that a sequence object is requested to generate the next value for the NO CACHE option:

  1. Der nächste Wert für das Sequenzobjekt wird berechnet.The next value for the sequence object is calculated.

  2. Der neue aktuelle Wert für das Sequenzobjekt wird in die Systemtabelle geschrieben.The new current value for the sequence object is written to the system table.

  3. Der berechnete Wert wird an die aufrufende Anweisung zurückgegeben.The calculated value is returned to the calling statement.

MetadatenMetadata

Weitere Informationen zu Sequenzen erhalten Sie durch Abfragen von sys.sequences.For information about sequences, query sys.sequences.

SecuritySecurity

BerechtigungenPermissions

Erfordert die Berechtigung CREATE SEQUENCE, ALTERoder CONTROL für das SCHEMA.Requires CREATE SEQUENCE, ALTER, or CONTROL permission on the SCHEMA.

  • Mitglieder der festen Datenbankrollen db_owner und db_ddladmin können Sequenzobjekte erstellen, ändern und löschen.Members of the db_owner and db_ddladmin fixed database roles can create, alter, and drop sequence objects.

  • Mitglieder der festen Datenbankrollen db_owner und db_datawriter können Sequenzobjekte aktualisieren, indem sie sie veranlassen, Zahlen zu generieren.Members of the db_owner and db_datawriter fixed database roles can update sequence objects by causing them to generate numbers.

Im folgenden Beispiel wird dem Benutzer die Berechtigung „AdventureWorks\Larry“ erteilt, um Sequenzen im Test-Schema zu erstellen.The following example grants the user AdventureWorks\Larry permission to create sequences in the Test schema.

GRANT CREATE SEQUENCE ON SCHEMA::Test TO [AdventureWorks\Larry]  

Der Besitz eines Sequenzobjekts kann mit der ALTER AUTHORIZATION-Anweisung übertragen werden.Ownership of a sequence object can be transferred by using the ALTER AUTHORIZATION statement.

Wenn eine Sequenz einen benutzerdefinierten Datentyp verwendet, muss der Ersteller der Sequenz über die REFERENCES-Berechtigung für den Typ verfügen.If a sequence uses a user-defined data type, the creator of the sequence must have REFERENCES permission on the type.

Überwachen vonAudit

Überwachen Sie die SCHEMA_OBJECT_CHANGE_GROUP, um CREATE SEQUENCE zu überwachen.To audit CREATE SEQUENCE, monitor the SCHEMA_OBJECT_CHANGE_GROUP.

BeispieleExamples

Beispiele zum Erstellen von Sequenzen und Verwenden der NEXT VALUE FOR-Funktion für das Generieren von Sequenznummern finden Sie unter Sequenznummern.For examples of creating sequences and using the NEXT VALUE FOR function to generate sequence numbers, see Sequence Numbers.

In den meisten der folgenden Beispiele werden Sequenzobjekte in einem Schema namens „Test“ erstellt.Most of the following examples create sequence objects in a schema named Test.

Um das Test-Schema zu erstellen, führen Sie die folgende Anweisung aus.To create the Test schema, execute the following statement.

CREATE SCHEMA Test ;  
GO  

A.A. Erstellen einer Sequenz, die sich um 1 vergrößertCreating a sequence that increases by 1

Im folgenden Beispiel erstellt Thierry eine Sequenz namens „CountBy1“, die sich bei jeder Verwendung um 1 vergrößert.In the following example, Thierry creates a sequence named CountBy1 that increases by one every time that it is used.

CREATE SEQUENCE Test.CountBy1  
    START WITH 1  
    INCREMENT BY 1 ;  
GO  

B.B. Erstellen einer Sequenz, die sich um 1 verkleinertCreating a sequence that decreases by 1

Das folgende Beispiel startet bei 0 und zählt bei jeder Verwendung um 1 zurück in negative Zahlen.The following example starts at 0 and counts into negative numbers by one every time it is used.

CREATE SEQUENCE Test.CountByNeg1  
    START WITH 0  
    INCREMENT BY -1 ;  
GO  

C.C. Erstellen einer Sequenz, die sich um 5 vergrößertCreating a sequence that increases by 5

Im folgenden Beispiel wird eine Sequenz erstellt, die sich bei jeder Verwendung um 5 vergrößert.The following example creates a sequence that increases by 5 every time it is used.

CREATE SEQUENCE Test.CountBy1  
    START WITH 5  
    INCREMENT BY 5 ;  
GO  

D.D. Erstellen einer Sequenz, die mit einer festgelegten Zahl beginntCreating a sequence that starts with a designated number

Nachdem Thierry eine Tabelle importiert hat, stellt er fest, dass die höchste verwendete ID-Nummer 24,328 ist.After importing a table, Thierry notices that the highest ID number used is 24,328. Thierry benötigt eine Sequenz, die Zahlen generiert, die mit 24,329 starten.Thierry needs a sequence that will generate numbers starting at 24,329. Im folgenden Code wird eine Sequenz erstellt, die mit 24,329 startet und um 1 inkrementiert wird.The following code creates a sequence that starts with 24,329 and increments by 1.

CREATE SEQUENCE Test.ID_Seq  
    START WITH 24329  
    INCREMENT BY 1 ;  
GO  

E.E. Erstellen einer Sequenz mit StandardwertenCreating a sequence using default values

Im folgenden Beispiel wird eine Sequenz mit den Standardwerten erstellt.The following example creates a sequence using the default values.

CREATE SEQUENCE Test.TestSequence ;  

Führen Sie die folgende Anweisung aus, um die Eigenschaften der Sequenz anzuzeigen.Execute the following statement to view the properties of the sequence.

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

Eine Teilliste der Ausgabe veranschaulicht die Standardwerte.A partial list of the output demonstrates the default values.

start_value -9223372036854775808
increment 1
mimimum_value -9223372036854775808
maximum_value 9223372036854775807
is_cycling 0
is_cached 1
current_value -9223372036854775808

F.F. Erstellen einer Sequenz mit einem bestimmten DatentypCreating a sequence with a specific data type

Im folgenden Beispiel wird eine Sequenz erstellt, die den smallint-Datentyp mit einem Bereich von –32.768 bis 32.767 verwendet.The following example creates a sequence using the smallint data type, with a range from -32,768 to 32,767.

CREATE SEQUENCE SmallSeq 
    AS smallint ;  

G.G. Erstellen einer Sequenz, die alle Argumente verwendetCreating a sequence using all arguments

Im folgenden Beispiel wird eine Sequenz namens „DecSeq“ erstellt, die den decimal-Datentyp verwendet und einen Bereich von 0 bis 255 aufweist.The following example creates a sequence named DecSeq using the decimal data type, having a range from 0 to 255. Die Sequenz beginnt mit 125 und wird immer um 25 inkrementiert, wenn eine Zahl generiert wurde.The sequence starts with 125 and increments by 25 every time that a number is generated. Da die Sequenz zum Durchlaufen konfiguriert wurde, wird sie beim Überschreiten des maximalen Werts von 200 beim minimalen Wert von 100 neu gestartet.Because the sequence is configured to cycle when the value exceeds the maximum value of 200, the sequence restarts at the minimum value of 100.

CREATE SEQUENCE Test.DecSeq  
    AS decimal(3,0)   
    START WITH 125  
    INCREMENT BY 25  
    MINVALUE 100  
    MAXVALUE 200  
    CYCLE  
    CACHE 3  
;  

Führen Sie die folgende Anweisung aus, um den ersten Wert anzuzeigen; die START WITH-Option mit 125.Execute the following statement to see the first value; the START WITH option of 125.

SELECT NEXT VALUE FOR Test.DecSeq;  

Führen Sie die Anweisung drei weitere Male aus, um 150, 175 und 200 zurückzugeben.Execute the statement three more times to return 150, 175, and 200.

Führen Sie die Anweisung erneut aus, um zu sehen, wie der Startwert zurück zur MINVALUE-Option 100 durchläuft.Execute the statement again to see how the start value cycles back to the MINVALUE option of 100.

Führen Sie den folgenden Code aus, um die Cachegröße zu bestätigen und den aktuellen Wert anzuzeigen.Execute the following code to confirm the cache size and see the current value.

SELECT cache_size, current_value   
FROM sys.sequences  
WHERE name = 'DecSeq' ;  

Weitere InformationenSee Also

ALTER SEQUENCE (Transact-SQL) ALTER SEQUENCE (Transact-SQL)
DROP SEQUENCE (Transact-SQL) DROP SEQUENCE (Transact-SQL)
NEXT VALUE FOR (Transact-SQL) NEXT VALUE FOR (Transact-SQL)
SequenznummernSequence Numbers