Create Sequence
U wilt wellicht een sequentie in SQL Server aanmaken om een autonummerveld te verwerken.
Syntax
De syntaxis voor het maken van een reeks in SQL Server (Transact-SQL) is:
CREATE SEQUENCE sequence_name ;
AS datatype Het kan BIGINT, INT, TINYINT, SMALLINT, DECIMAL, of NUMERIC zijn. Als datatype niet wordt opgegeven, wordt standaard een BIGINT datatype gebruikt. START WITH waarde De beginwaarde die de sequentie initieel teruggeeft. INCREMENT BY waarde Dit kan een positieve of negatieve waarde zijn. Indien een positieve waarde wordt opgegeven, zal de reeks een oplopende reeks van waarden zijn. Indien een negatieve waarde wordt opgegeven, wordt de reeks een aflopende reeks van waarden. MINVALUE waarde De minimum toegelaten waarde voor de reeks. NO MINVALUE Dit betekent dat er geen minimumwaarde is opgegeven voor de reeks. MAXVALUE value De maximumwaarde die voor de reeks is toegestaan. NO MAXVALUE Dit betekent dat er geen maximumwaarde voor de sequentie is gespecificeerd. CYCLE Dit betekent dat de sequentie opnieuw begint zodra deze is voltooid. NO CYCLE Betekent dat de sequentie een foutmelding geeft na afloop van de sequentie. De sequentie wordt niet opnieuw gestart. CACHE waarde De sequentienummers worden in het cachegeheugen opgeslagen om disk IO te minimaliseren. NO CACHE De sequentienummers worden niet in de cache opgeslagen.
Voorbeeld
Laten we eens kijken naar een voorbeeld van hoe u een sequentie maakt in SQL Server (Transact-SQL).
Voorbeeld:
CREATE SEQUENCE contacts_seq AS BIGINT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE CACHE 10;
Dit zou een sequentie-object maken met de naam contacten_seq. Het eerste volgnummer dat het zou gebruiken is 1 en elk volgend nummer zou met 1 worden verhoogd (d.w.z.: 2,3,4,…}. Het zal tot 10 waarden cachen voor prestatie. De maximale waarde die het sequentienummer kan zijn is 99999 en de sequentie zal niet meer draaien zodra dat maximum is bereikt.
Dus u kunt uw CREATE SEQUENCE statement als volgt vereenvoudigen:
CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1;
Nu u een sequentie-object hebt gemaakt om een autonummerveld te simuleren, zullen we behandelen hoe u een waarde uit dit sequentie-object ophaalt. Om de volgende waarde in de volgorde op te halen, moet u het commando NEXT VALUE FOR gebruiken.
Voorbeeld:
SELECT NEXT VALUE FOR contacts_seq;
Dit zou de volgende waarde uit contacts_seq opvragen. Het nextval statement moet worden gebruikt in een SQL statement. Bijvoorbeeld:
INSERT INTO contacts(contact_id, last_name)VALUES(NEXT VALUE FOR contacts_seq, 'Smith');
Dit INSERT statement zou een nieuw record invoegen in de contacten tabel. Het contact_id veld zou het volgende nummer uit de contacts_seq reeks toegewezen krijgen. Het veld last_name zou worden ingesteld op ‘Smith’.