segunda-feira, 27 de setembro de 2010

Usando funções IDENTITY

O SQL Server disponibiliza diversas funções de captura de incrementos de campos Identity. O @@Identity definitivamente é o mais disseminado, porém dependendo do contexto e da necessidade, pode não ser o mais adequado.

As funções Scope_identity() e Ident_current proporcionam outras funcionalidades, além das proporcionadas pelo @@identity.
Observe os exemplos abaixo para entender melhor o uso de cada função e faça as suas conclusões:

CREATE TABLE frutas
  (
     codigo INT IDENTITY,
     nome   VARCHAR(100)
  )
GO

CREATE TABLE frutasauditoria
  (
     codigo INT IDENTITY,
     nome   VARCHAR(100)
  )
GO

CREATE TRIGGER trgfrutasinseridas
ON frutas
AFTER INSERT
AS

  INSERT frutasauditoria
  SELECT nome
  FROM   inserted

GO

INSERT frutasauditoria
       (nome)
VALUES ('Maçã')

INSERT frutasauditoria
       (nome)
VALUES ('Uva')

INSERT frutas
       (nome)
VALUES ('Uva')

INSERT frutas
       (nome)
VALUES ('Banana')



INSERT frutas
       (nome)
VALUES ('Cereja')


SELECT @@IDENTITY                       AS [@@identity],
       Scope_identity()                 AS [scope_identity],
       Ident_current('Frutas')          AS [IdentCurrent Frutas],
       Ident_current('FrutasAuditoria') AS [IdentCurrent FrutasAuditoria] 


O resultado deve ser:

Resultados das funções Identity


Execute a última query em uma outra sessão do SQL Server e veja o resultado:

Resultados da função @@identity é sempre contextualizado
Até a próxima!

Nenhum comentário:

Postar um comentário

Leave your comment here!