SQL Server: Sequências (número automático)

Criar sequência

Pode desejar criar uma sequência no SQL Server para lidar com um campo de número automático.

Sintaxe

A sintaxe para criar uma sequência no SQL Server (Transact-SQL) é:

CREATE SEQUENCE sequence_name ;

AS datatype Pode ser BIGINT, INT, TINYINT, SMALLINT, DECIMAL, ou NUMERIC. Se o datatype não for especificado, a seqüência será padrão para um BIGINT datatype. START WITH value O valor inicial que a sequência retorna incialmente. INCREMENT BY value Pode ser um valor positivo ou negativo. Se for especificado um valor positivo, a sequência será uma sequência ascendente de valores. Se um valor negativo for especificado, a seqüência será uma seqüência decrescente de valores. Valor MINVALUE O valor mínimo permitido para a seqüência. NÃO MINVALUE Significa que não há um valor mínimo especificado para a seqüência. MAXVALUE value O valor máximo permitido para a seqüência. NO MAXVALUE Significa que não há nenhum valor máximo especificado para a seqüência. CICLO Significa que a seqüência recomeçará uma vez que tenha completado a seqüência. NO CYCLE Significa que a sequência irá levantar um erro quando tiver completado a sequência. Não recomeçará a seqüência novamente. Valor CACHE Coloca em cache os números da sequência para minimizar a IO do disco. NO CACHE Não armazena os números da sequência.

Exemplo

Vejamos um exemplo de como criar uma sequência no SQL Server (Transact-SQL).

Por exemplo:

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

Esta situação criaria um objecto de sequência chamado contacts_seq. O primeiro número sequencial que utilizaria é 1 e cada número subsequente aumentaria em 1 (ou seja: 2,3,4,…}. Ele irá armazenar até 10 valores para o desempenho. O valor máximo que o número de sequência pode ser 99999 e a sequência não irá rodar uma vez que esse máximo seja atingido.

Então você pode simplificar a sua instrução CREATE SEQUENCE da seguinte forma:

CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1;

Agora que você criou um objeto sequência para simular um campo autonumber, vamos cobrir como recuperar um valor desse objeto sequência. Para recuperar o próximo valor na ordem da sequência, você precisa usar o comando NEXT VALUE FOR.

Por exemplo:

SELECT NEXT VALUE FOR contacts_seq;

Isso recuperaria o próximo valor a partir de contacts_seq. A instrução nextval precisa ser usada em uma instrução SQL. Por exemplo:

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

Esta instrução INSERT inseriria um novo registro na tabela de contatos. O campo contact_id seria atribuído ao próximo número da sequência contacts_seq. O campo last_name seria definido como ‘Smith’.

Deixe uma resposta

O seu endereço de email não será publicado.