Sábado, 5 de Abril de 2025

728x90 AdSpace

17 de jun. de 2008
Unknown

Tratando colunas Identity no SQL Server

Bom, deixa primeiro eu me apresentar.
Me chamo Thiago Zavaschi, trabalho na empresa TechResult como Desenvolvedor e DBA.
Sou formado em Ciência da Computação pela PUC-PR, e atualmente curso mestrado em Informática Aplicada na área de Reconhecimento de Padrões (reconhecimento de expressões faciais) também pela PUC-PR.
Possuo um blog pessoal sobre tecnologia também, atualmente os assuntos estão mais gerais, mas em breve o foco será o SQL Server e bancos de dados em geral, o endereço para quem se interessar: www.zavaschi.com.

Bom, vamos ao que interessa, algumas dicas básicas para quem precisa mexer com campos identity:

Em muitas ocasiões nos deparamos com situações em que precisamos trabalhar em alguma coluna que seja identity. Este mini-artigo descreve alguns comandos úteis na manipulação destas colunas.

Criando uma tabela com campo identity: Devemos criar com o parâmetro identity, e configurar o primeiro valor, e o valor de incremento, respectivamente (IDENTITY (<inicio>,<incremento>)). Conforme no exemplo a seguir:

CREATE TABLE Tabela (
      Id INT IDENTITY (1,1) PRIMARY KEY,
      Valor VARCHAR(50)
)

Reiniciando o valor do campo identity: Algumas vezes precisamos alterar o valor do identity (para reiniciar a contagem, por exemplo). Há o comando truncate que além de limpar a tabela (entre outras coisas), também zera o valor do identity. No entanto, se o nosso objetivo é apenas trocar o valor do identity, o truncate não é uma saída interessante. Para manipular o identity podemos fazer como descrito a seguir:

Vamos imaginar que queremos que o próximo registro a ser inserido na tabela Tabela queremos que sua chave primária Id, se inicie em 1.

Para resolver esse problema, podemos usar a seguinte instrução:

DBCC CHECKIDENT (Tabela, reseed, 0)

O último parâmetro se torna o valor atual do identity. Ao inserir o próximo registro, o mesmo virá com o seu Id com o valor identity somado de 1 (caso seja um identity de incremento 1), o valor do identity da tabela vai para 1, e assim por diante.

Recuperar o último valor inserido de um campo identity: Para recuperar o último valor de identity inserido (ex: inserir algo em uma tabela, e cadastrar um novo registro com o id do registro recém inserido), podemos utilizar:

· @@IDENTITY, que retorna o valor do identity do último registro inserido na tabela, ou;

· SCOPE_IDENTITY(), que retorna o último valor mas dentro do escopo em que a query foi executada.

Não recomendo a utilização de @@IDENTITY, pois isso pode acarretar problemas de consistência em cenários onde existe um alto grau de inserção/manipulação dos dados no banco (ou mais especificamente, na tabela em questão).

Um exemplo simples de uso pode ser:

DECLARE @techId INT
INSERT INTO Tabela (Valor) VALUES (‘Testando Identity’)
SELECT @techId = SCOPE_IDENTITY()

Bom… espero que a informação seja útil.
Em breve mais posts meus, abraços!

no image
  • Blogger Comments
  • Facebook Comments

0 comentários :

Top