SQL Server:

Vytvořit sekvenci

Možná budete chtít vytvořit sekvenci v SQL Serveru, která bude zpracovávat pole s automatickým číslem.

Syntaxe

Syntaxe pro vytvoření sekvence v SQL Serveru (Transact-SQL) je:

CREATE SEQUENCE sequence_name ;

AS datový typ Může to být BIGINT, INT, TINYINT, SMALLINT, DECIMAL nebo NUMERIC. Pokud není datový typ zadán, bude sekvence implicitně nastavena na datový typ BIGINT. START WITH value Počáteční hodnota, kterou sekvence vrací na počátku. INCREMENT BY value Může to být kladná nebo záporná hodnota. Pokud je zadána kladná hodnota, sekvence bude vzestupnou posloupností hodnot. Pokud je zadána záporná hodnota, sekvence bude sestupnou posloupností hodnot. MINVALUE value Minimální hodnota povolená pro sekvenci. NO MINVALUE Znamená, že pro sekvenci není zadána žádná minimální hodnota. MAXVALUE value Maximální hodnota povolená pro sekvenci. NO MAXVALUE Znamená, že pro sekvenci není zadána žádná maximální hodnota. CYCLE Znamená, že sekvence začne znovu po dokončení sekvence. NO CYCLE Znamená, že sekvence po dokončení sekvence vyvolá chybu. Sekvence se znovu nespustí. Hodnota CACHE Ukládá čísla sekvencí do mezipaměti, aby se minimalizoval diskový IO. NO CACHE Neukládá čísla sekvencí do mezipaměti.

Příklad

Podívejme se na příklad vytvoření sekvence v SQL Serveru (Transact-SQL).

Například:

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

Tímto by se vytvořil objekt sekvence s názvem contacts_seq. První číslo sekvence, které by se použilo, je 1 a každé další číslo by se zvyšovalo o 1 (tj.: 2,3,4,…}. Kvůli výkonu bude mít v mezipaměti až 10 hodnot. Maximální hodnota, kterou může mít sekvenční číslo, je 99999 a po dosažení tohoto maxima se sekvence nebude cyklovat.

Příkaz CREATE SEQUENCE tedy můžete zjednodušit takto:

CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1;

Teď, když jste vytvořili objekt sekvence, který simuluje pole autonumber, se budeme zabývat tím, jak z tohoto objektu sekvence získat hodnotu. Chcete-li získat další hodnotu v pořadí sekvence, musíte použít příkaz NEXT VALUE FOR.

Například:

SELECT NEXT VALUE FOR contacts_seq;

Tímto způsobem byste získali další hodnotu z contacts_seq. Příkaz nextval je třeba použít v příkazu SQL. Například:

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

Tento příkaz INSERT by vložil nový záznam do tabulky contacts. Políčku contact_id by bylo přiřazeno další číslo ze sekvence contacts_seq. Pole last_name by bylo nastaveno na ‚Smith‘.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.