quinta-feira, 24 de março de 2011

Auto-numeração em colunas (IDENTITY) - Parte 1

Encontrar uma coluna (ou algumas colunas) que identifique(m) unicamente as linhas de uma tabela (chave primária) nem sempre é uma tarefa trivial. 

Alguns tipos de registros possuem características que os distingem unicamente dos demais, como os casos abaixo:
Por outro lado, existem registros que necessitam de uma chave composta por várias colunas da tabela ou mesmo onde não se pode garantir que a combinação diferenciará uma linhas das demais.

Uma das maneiras de garantir a unicidade de um registro é utilizar um código identificador (ID) para os registros da tabela. Para isso, pode-se usar uma coluna auto-numerável, cujo valor nunca se repete entre duas linhas.

A propriedade IDENTITY

A grande maioria dos SGBDs populares possuem o recurso de auto-numeração para colunas, como é o caso das SEQUENCES para Oracle, ou da propriedade AUTO_INCREMENT para o MySQL.

O SQL Server disponibiliza a propriedade IDENTITY para as colunas do tipo inteiro, permitindo a criação de uma coluna auto-numerável.

Algumas condições devem ser observadas para trabalhar com esta propriedade:
  • Apenas colunas do tipo INT, TINYINT, SMALLINT e BIGINT podem ser autonumeráveis
  • Somente uma única coluna pode ser autonumerável em uma tabela

Criando uma coluna IDENTITY

Para criar uma coluna com a propriedade IDENTITY, é necessário especificar um valor para o início da contagem e um valor de incremento, normalmente utiliza-se o valor 1 para ambos os parâmetros.

Veja o exemplo abaixo:

CREATE TABLE Pessoa 
(
    id INT IDENTITY(1,1) PRIMARY KEY,
    nome VARCHAR(50)
)

No script acima, criou-se uma tabela para armazenar Pessoas. O campo id será preenchdio automaticamente, iniciando em 1 para o 1º registro, 2 para o 2º registro e assim em diante.

Inserindo registros em uma tabela com coluna IDENTITY

Em condições normais, não é necessário especificar valores para o campo IDENTITY. Veja como os dados são inseridos na tabela Pessoa
 
INSERT INTO Pessoa VALUES ('Evandro')
INSERT INTO Pessoa VALUES ('Mariana')
INSERT INTO Pessoa VALUES ('Regina')
INSERT INTO Pessoa VALUES ('Antonio')

Veja o resultado da consulta em nossa tabela:


Observe que não foi necessário inserir os valores para a coluna ID.

Em breve, publicarei alguns recursos para manipular colunas com a  propriedade IDENTITY.


Um comentário:

Anônimo disse...

Show, pensei que não tinha isso no SQL Server.

Postar um comentário