SQL Server: Sequences (Autonumber)

Create Sequence

Sie möchten vielleicht eine Sequenz in SQL Server erstellen, um ein Autonummernfeld zu behandeln.

Syntax

Die Syntax zum Erstellen einer Sequenz in SQL Server (Transact-SQL) lautet:

CREATE SEQUENCE sequence_name ;

AS datatype Es kann BIGINT, INT, TINYINT, SMALLINT, DECIMAL oder NUMERIC sein. Wird der Datentyp nicht angegeben, wird die Sequenz standardmäßig auf einen BIGINT-Datentyp eingestellt. START WITH value Der Anfangswert, den die Sequenz anfänglich zurückgibt. INCREMENT BY value Es kann entweder ein positiver oder negativer Wert sein. Wenn ein positiver Wert angegeben wird, ist die Sequenz eine aufsteigende Folge von Werten. Wird ein negativer Wert angegeben, ist die Folge eine absteigende Folge von Werten. MINVALUE value Der für die Sequenz zulässige Mindestwert. NO MINVALUE Das bedeutet, dass für die Sequenz kein Mindestwert angegeben ist. MAXWERT Wert Der für die Sequenz zulässige Höchstwert. KEIN MAXWERT Das bedeutet, dass für die Sequenz kein Maximalwert angegeben ist. ZYKLUS Das bedeutet, dass die Sequenz nach Abschluss der Sequenz von vorne beginnt. KEIN ZYKLUS Das bedeutet, dass die Sequenz einen Fehler auslöst, wenn sie die Sequenz abgeschlossen hat. Die Sequenz wird nicht neu gestartet. CACHE-Wert Die Sequenznummern werden zwischengespeichert, um den Festplattenverbrauch zu minimieren. NO CACHE Die Sequenznummern werden nicht zwischengespeichert.

Beispiel

Schauen wir uns ein Beispiel für die Erstellung einer Sequenz in SQL Server (Transact-SQL) an:

Beispiel:

CREATE SEQUENCE contacts_seq AS BIGINT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE CACHE 10;

Damit würde ein Sequenzobjekt namens contacts_seq erstellt. Die erste Sequenznummer, die verwendet wird, ist 1 und jede nachfolgende Nummer wird um 1 erhöht (d.h.: 2,3,4,…}. Aus Leistungsgründen werden bis zu 10 Werte zwischengespeichert. Der Höchstwert für die Sequenznummer ist 99999, und die Sequenz wird nicht mehr durchlaufen, sobald dieser Höchstwert erreicht ist.

So können Sie Ihre CREATE SEQUENCE-Anweisung wie folgt vereinfachen:

CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1;

Nachdem Sie nun ein Sequenzobjekt erstellt haben, um ein automatisches Nummernfeld zu simulieren, werden wir uns nun damit befassen, wie man einen Wert aus diesem Sequenzobjekt abruft. Um den nächsten Wert in der Sequenzreihenfolge abzurufen, müssen Sie den Befehl NEXT VALUE FOR verwenden.

Beispiel:

SELECT NEXT VALUE FOR contacts_seq;

Damit würde der nächste Wert aus contacts_seq abgerufen. Die nextval-Anweisung muss in einer SQL-Anweisung verwendet werden. Beispiel:

INSERT INTO contacts(contact_id, last_name)VALUES(NEXT VALUE FOR contacts_seq, 'Smith');

Diese INSERT-Anweisung würde einen neuen Datensatz in die Tabelle contacts einfügen. Dem Feld contact_id wird die nächste Nummer aus der contacts_seq-Sequenz zugewiesen. Das Feld last_name würde auf ‚Smith‘ gesetzt werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.