Identity

Uma duvida muito corriqueira do forum da Microsoft SQL Server é sobre colunas com propriedade Identity.
Uma coluna é definida como identity no momento de criação da tabela, como na sintaxe abaixo:

CREATE TABLE Funcionarios(
ID INT IDENTITY(1,1),
Nome VARCHAR(100)
)

Nota: Apenas uma coluna IDENTITY por coluna é permitido
Os Numeros (1,1) definem reespectivamente, o primeiro valor da contagem, e o salto que sera realizado, em nosso exemplo, a sequencia se inicia em 1 aumenta de 1 em 1, portanto: 1, 2, 3, 4, 5…..

Para se realizar um insert em uma tabela com um campo identity, não se deve especificar o campo identity, apenas os outros, portanto, em nosso exemplo:

INSERT INTO Funcionarios VALUES (1,'Fabrizzio')

Ira falhar

INSERT INTO Funcionarios(ID, Nome) VALUES (1,'Fabrizzio')

Ira falhar

INSERT INTO Funcionarios(Nome) VALUES ('Fabrizzio')

Ira funcionar
Como ainda não possuimos nenhum dado, se realizarmos um select nesta base, teremos os seguintes dados:

1 Fabrizzio

Caso por algum motivo algum ID foi deletado de sua tabela, é possivel realizar o insert manual em uma coluna identity, porem o seguinte comando deve ser executado:

SET IDENTITY_INSERT dbo.Funcionarios ON

Realiza-se o insert necessario……

SET IDENTITY_INSERT dbo.Funcionarios OFF

Campos IDENTITY não trabalham por transação, ou seja:

--CRIA TABELA
CREATE TABLE IDTESTE(ID INT IDENTITY(1,1))
--TRANSACAO 1 COM ROLLBACK
BEGIN TRAN
INSERT INTO IDTESTE DEFAULT VALUES
ROLLBACK
--TRANSACAO 2 COM COMMIT AUTOMATICO DO SQL SERVER
INSERT INTO IDTESTE DEFAULT VALUES
--SELECT NA TABELA
SELECT * FROM IDTESTE

Resultado: 2

Para se verificar o ID corrente da coluna identity da tabela:

DBCC CHECKIDENT(Funcionarios)

Para se resetar uma coluna identity:

DBCC CHECKIDENT(ID11, RESEED, NewSeedValue)

Anúncios
Post a comment or leave a trackback: Trackback URL.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: