quinta-feira, 2 de maio de 2013

Utilizando SEQUENCES no Microsoft SQL Server 2012

No último artigo, vimos que a Microsoft lançou o CTP1 da próxima versão do Microsoft SQL Server, no qual tínhamos o Codinome “Denali”.

De lá para cá, chegamos à versão Release Candidate (0) do produto, denominado como: Microsoft SQL Server 2012.

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.

Nenhum comentário:

Postar um comentário