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!
0 comentários :
Postar um comentário