SQL Server: Sequences (Autonumber)

Create Sequence

Voit halutessasi luoda SQL Serverissä sekvenssin autonumerokentän käsittelyä varten.

Syntaksi

Syntaksi sarjan luomiseksi SQL Serverissä (Transact-SQL) on:

CREATE SEQUENCE sequence_name ;

AS datatype Se voi olla BIGINT, INT, TINYINT, SMALLINT, DECIMAL tai NUMERIC. Jos datatyyppiä ei ole määritetty, sekvenssi käyttää oletusarvoisesti BIGINT-tietotyyppiä. START WITH value Alkuarvo, jonka sekvenssi palauttaa aluksi. INCREMENT BY value Se voi olla joko positiivinen tai negatiivinen arvo. Jos määritetään positiivinen arvo, sekvenssi on nouseva arvosarja. Jos määritetään negatiivinen arvo, sekvenssi on laskeva arvosarja. MINVALUE value Jakson pienin sallittu arvo. NO MINVALUE Tarkoittaa, että jaksolle ei ole määritetty vähimmäisarvoa. MAXVALUE value Jaksolle sallittu enimmäisarvo. NO MAXVALUE Se tarkoittaa, että sarjalle ei ole määritetty enimmäisarvoa. CYCLE Se tarkoittaa, että sekvenssi alkaa alusta, kun se on suorittanut sekvenssin loppuun. NO CYCLE Tarkoittaa, että sekvenssi aiheuttaa virheen, kun se on suorittanut sekvenssin loppuun. Se ei aloita sekvenssiä uudelleen. CACHE-arvo Se tallentaa sekvenssinumerot välimuistiin levyn IO:n minimoimiseksi. NO CACHE Se ei tallenna sekvenssinumeroita välimuistiin.

Esimerkki

Katsotaanpa esimerkkiä siitä, miten SQL Serverissä (Transact-SQL) luodaan sekvenssi.

Esimerkki:

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

Tällöin luotaisiin sekvenssiobjekti nimeltä contacts_seq. Ensimmäinen järjestysnumero, jota se käyttäisi, olisi 1 ja jokainen seuraava numero kasvaisi 1:llä (eli: 2,3,4,…}. Se tallentaa välimuistiin enintään 10 arvoa suorituskyvyn vuoksi. Suurin arvo, joka sekvenssinumero voi olla, on 99999, eikä sekvenssi kierrä, kun tämä maksimiarvo on saavutettu.

Voit siis yksinkertaistaa CREATE SEQUENCE -lausekkeen seuraavasti:

CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1;

Nyt kun olet luonut sekvenssiolion simuloidaksesi autonumero-kenttää, käsittelemme sitä, miten arvo haetaan tästä sekvenssioliosta. Jos haluat hakea seuraavan arvon sekvenssijärjestyksessä, sinun on käytettävä NEXT VALUE FOR -käskyä.

Esimerkiksi:

SELECT NEXT VALUE FOR contacts_seq;

Tämä hakisi seuraavan arvon kohdasta contacts_seq. Nextval-käskyä on käytettävä SQL-lauseessa. Esimerkiksi:

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

Tämä INSERT-lause lisäisi uuden tietueen contacts-tauluun. Contact_id-kenttään määritettäisiin seuraava numero contacts_seq-jaksosta. Last_name-kentän arvoksi määritettäisiin ’Smith’.

Vastaa

Sähköpostiosoitettasi ei julkaista.