Desenvolvimento - SQL

Utilizando SEQUENCES no Microsoft SQL Server 2012

Neste artigo, estou descrevendo a utilização da nova feature do Microsoft SQL Server 2012, que são as SEQUENCES.

por Cristiano Joaquim



Este artigo tem o fundamento de apresentar uma das várias novidades que a próxima versão do SQL Server nos traz, como por exemplo, o uso de SEQUENCES.

As SEQUENCES são objetos usado para gerar valores de auto numeração, onde podemos definir os valores iniciais e seus incrementos.

São como qualquer outro objeto definido no schema e vinculado a um usuário, além de ter as opções do comando CREATE, ALTER e DROP SEQUENCE para gerenciamento. Além disso, podemos consulta a VIEW sys.sequences para exibição do catálogo, afim de sabermos mais sobre os objetos Sequence no banco de dados.

A diferença em relação ao conhecido IDENTITY (velho conhecido no SQL Server) se dá pelo fato de que uma SEQUENCE poder ser acionada sempre que necessária independente de tabelas e campos do banco. Entretanto, em relação à funcionalidade, a SEQUENCE mantém semelhanças com o IDENTITY.

Por padrão, uma SEQUENCE possui seu DataType definido como bitint, porém, também poderemos trabalhar com DataTypes como:

- tinyint;
- smallint
- int
- decimal
- numeric

A imagem abaixo mostra onde poderemos visualizar as SEQUENCES já criadas para nosso Banco de dados e respectivamente, criar uma nova SEQUENCE, conforme mostra a Imagem 1 e 2.



Imagem 1 - Local onde encontramos os objetos SEQUENCES



Imagem 2 - Tela de criação de uma SEQUENCE

Assim como uma Procedure, Trigger e Function, podemos também criar SEQUENCES através de linha de código do Management Studio, como apresentado na figura abaixo:



Imagem 3 - Criando uma SEQUENCE via linha de Código do Management Studio.

Na imagem acima, o comando descreve a inclusão de alguns parâmetros para a criação de uma SEQUENCE, como por exemplo:

- MINVALUE e MAXVALUE: delimitam o limite da SEQUENCE com seu respectivo valor máximo e mínimo. Caso o valor não seja inserido, será atribuído o valor do DataType escolhido.

- INCREMENT: define em quantos números serão incrementadas as sequencias. No exemplo da imagem acima, será realizado o incremento de 1 em 1.

- CYCLE: A propriedade do objeto CYCLE permite começar novamente um ciclo a partir do momento que a propriedade MINVALUE e MAXVALUE for atingida.

- CACHE: pelo fato de desempenho, o SQL Server pré-aloca os números sequencias pela propriedade CACHE, sendo que o valor padrão para esta é 15, significando que valores de 1 a 15 serão disponibilizados na memória a partir do último valor armazenado em cache.

Na Imagem abaixo, criei um Script bem simples que envolve a utilização de Sequence no SQL Server 2012 R0.



Imagem 4 - Criando os objetos que poderão ser utilizados no exemplo.

Se perceberem, não inclui os comandos MINVALUE, MAXVALUE e CYCLE na criação da SEQUENCE, visto que não quero utilizá-los no momento.

Na linha 28, temos o comando que fará o incremento da SEQUENCE dentro da Tabela.

Ao executarmos a Procedure do exemplo e a mesma incluir o registro, podemos confirmar o processamento através de um SELECT na tabela, conforme exemplo da imagem abaixo:



Imagem 5 - Executando a Procedure e verificando os valores inseridos na Tabela

Conclusão:

Neste artigo demos uma introdução sobre o que é o objeto SEQUENCE, além de como criamos e trabalharmos com ele dentro do banco de dados.

Além deste exemplo, poderíamos incluir ai um comparativo entre SEQUENCE x IDENTITY e controle Transacional com SEQUENCE. Porém, estes serão um assunto para o próximo Artigo.

Bons estudos.
Cristiano Joaquim

Cristiano Joaquim - Graduado em Ciência da Computação pela Universidade de Guarulhos (UnG) e Pós-graduado em BI pela Faculdade Veris IBTA. Trabalha há 11 anos com Tecnologia Microsoft.