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:
(
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 |
Nenhum comentário:
Postar um comentário
Leave your comment here!