Create Sequence
Poate doriți să creați o secvență în SQL Server pentru a gestiona un câmp autonumeric.
Sintaxa
Sintaxa pentru a crea o secvență în SQL Server (Transact-SQL) este:
CREATE SEQUENCE sequence_name ;
AS datatype Acesta poate fi BIGINT, INT, TINYINT, SMALLINT, SMALLINT, DECIMAL, sau NUMERIC. Dacă tipul de date nu este specificat, secvența va avea în mod implicit un tip de date BIGINT. START WITH value Valoarea inițială pe care secvența o returnează inițial. INCREMENT BY value Poate fi o valoare pozitivă sau negativă. Dacă se specifică o valoare pozitivă, secvența va fi o secvență ascendentă de valori. Dacă se specifică o valoare negativă, secvența va fi o secvență descrescătoare de valori. MINVALUE value Valoarea minimă permisă pentru secvență. NO MINVALUE Înseamnă că nu există o valoare minimă specificată pentru secvență. Valoarea MAXVALUE Valoarea maximă permisă pentru secvență. NO MAXVALUE Înseamnă că nu este specificată o valoare maximă pentru secvență. CYCLE Înseamnă că secvența va începe din nou după ce a fost finalizată. NO CYCLE Înseamnă că secvența va genera o eroare după ce a finalizat secvența. Secvența nu va începe din nou. CACHE Valoarea CACHE Pune în cache numerele secvențelor pentru a minimiza IO pe disc. NO CACHE Nu stochează numerele secvențelor.
Exemplu
Să ne uităm la un exemplu de creare a unei secvențe în SQL Server (Transact-SQL).
De exemplu:
CREATE SEQUENCE contacts_seq AS BIGINT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE CACHE 10;
Aceasta ar crea un obiect secvență numit contacts_seq. Primul număr de secvență pe care l-ar folosi este 1 și fiecare număr ulterior ar crește cu 1 (adică: 2,3,4,…}. Acesta va stoca în memoria cache până la 10 valori pentru performanță. Valoarea maximă pe care o poate avea numărul secvenței este 99999, iar secvența nu se va cicla odată ce se atinge această valoare maximă.
Așa că puteți simplifica instrucțiunea CREATE SEQUENCE după cum urmează:
CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1;
Acum că ați creat un obiect secvență pentru a simula un câmp cu număr automat, vom vedea cum să recuperăm o valoare din acest obiect secvență. Pentru a prelua următoarea valoare în ordinea secvenței, trebuie să utilizați comanda NEXT VALUE FOR.
De exemplu:
SELECT NEXT VALUE FOR contacts_seq;
Aceasta ar prelua următoarea valoare din contacts_seq. Instrucțiunea nextval trebuie să fie utilizată într-o instrucțiune SQL. De exemplu:
INSERT INTO contacts(contact_id, last_name)VALUES(NEXT VALUE FOR contacts_seq, 'Smith');
Această instrucțiune INSERT ar introduce o nouă înregistrare în tabelul contacts. Câmpului contact_id i s-ar atribui următorul număr din secvența contacts_seq. Câmpul last_name ar fi setat la ‘Smith’.
.