Utwórz sekwencję
Możesz chcieć utworzyć sekwencję w SQL Server, aby obsłużyć pole autonumber.
Syntaktyka
Składnia tworzenia sekwencji w SQL Server (Transact-SQL) jest następująca:
CREATE SEQUENCE sequence_name ;
AS datatype Może to być BIGINT, INT, TINYINT, SMALLINT, DECIMAL lub NUMERIC. Jeśli typ danych nie zostanie podany, sekwencja domyślnie ustawi typ BIGINT. START WITH wartość Wartość początkowa zwracana przez sekwencję. INCREMENT BY wartość Może to być wartość dodatnia lub ujemna. Jeśli podana jest wartość dodatnia, sekwencja będzie rosnącą sekwencją wartości. Jeśli podana jest wartość ujemna, sekwencja będzie malejącą sekwencją wartości. MINVALUE wartość Minimalna wartość dozwolona dla sekwencji. NO MINVALUE Oznacza, że dla sekwencji nie określono wartości minimalnej. MAXVALUE wartość Maksymalna wartość dozwolona dla sekwencji. NO MAXVALUE Oznacza, że dla sekwencji nie określono wartości maksymalnej. CYCLE Oznacza, że sekwencja rozpocznie się od nowa po jej zakończeniu. NO CYCLE Oznacza, że sekwencja zgłosi błąd po zakończeniu sekwencji. Nie będzie rozpoczynać sekwencji od nowa. Wartość CACHE Buforowanie numerów sekwencji w celu zminimalizowania operacji wejścia/wyjścia z dysku. NO CACHE Nie buforuje numerów sekwencji.
Przykład
Przyjrzyjrzyjmy się przykładowi tworzenia sekwencji w SQL Server (Transact-SQL).
Na przykład:
CREATE SEQUENCE contacts_seq AS BIGINT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE CACHE 10;
Tworzyłoby to obiekt sekwencji o nazwie kontakty_seq. Pierwszy numer sekwencji, którego użyje to 1, a każdy kolejny numer będzie zwiększany o 1 (np.: 2,3,4,…}. Będzie buforować do 10 wartości w celu zwiększenia wydajności. Maksymalna wartość, jaką może mieć numer sekwencji to 99999, a sekwencja nie będzie się powtarzać po osiągnięciu tego maksimum.
Więc możesz uprościć instrukcję CREATE SEQUENCE w następujący sposób:
CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1;
Teraz, gdy utworzyłeś obiekt sekwencji, aby symulować pole autonumeryczne, zajmiemy się tym, jak pobrać wartość z tego obiektu sekwencji. Aby pobrać następną wartość w kolejności sekwencji, musisz użyć polecenia NEXT VALUE FOR.
Na przykład:
SELECT NEXT VALUE FOR contacts_seq;
To pobrałoby następną wartość z contacts_seq. Polecenie nextval musi być użyte w instrukcji SQL. Na przykład:
INSERT INTO contacts(contact_id, last_name)VALUES(NEXT VALUE FOR contacts_seq, 'Smith');
To polecenie INSERT wstawiłoby nowy rekord do tabeli contacts. Do pola contact_id zostanie przypisany kolejny numer z sekwencji contacts_seq. Pole last_name zostanie ustawione na 'Smith’.
.