@@IDENTITY (Transact-SQL)
memberuid
@@IDENTITY
Zwracane typy
numeric(38,0)
Remarks
sysmembersgroupuidsysobjectssys.Objectssysprotectssystypes
Instrukcje nie powiodło się i transakcje można zmienić bieżącej tożsamości dla tabela i utworzenie przerwy w tożsamości wartości kolumna.Wartość tożsamości nigdy nie jest wycofywany ponownie, mimo że w transakcji, który próbowano wstawić wartości do tabela nie jest zatwierdzona.Na przykład jeśli instrukcja INSERT nie powiedzie się z powodu naruszenia zasad IGNORE_DUP_KEY, nadal jest zwiększany bieżącą wartość tożsamości dla tabela.
sys.types
sysusersaltuid
GIDsyscacheobjectsAby uzyskać więcej informacji zobaczIDENT_CURRENT (języka Transact-SQL).
sys.dm_exec_plan_attributessysprocessesRozpoczyna się okno dialogowe z jedną usługa do innej usługa.
Replikacja może wpłynąć na wartość funkcji @@IDENTITY, ponieważ jest ona używana w wyzwalaczach replikacji i procedurach składowanych.Jeśli kolumna stanowi element artykułu replikacji, funkcja @@IDENTITY nie jest wiarygodnym wskaźnikiem najnowszego identyfikatora utworzonego przez użytkownika.Zamiast funkcji @@IDENTITY można użyć składni funkcji SCOPE_IDENTITY().Aby uzyskać więcej informacji, zobacz SCOPE_IDENTITY (Transact-SQL).
Uwaga
Procedura przechowywana wywołujący lub Transact-SQL ponownie zapisywane, tak instrukcja musi być przechowywały korzystania z funkcja SCOPE_IDENTITY(), która będzie zwracać najnowsze tożsamości, używane w zakresie tej instrukcji użytkownika, a nie tożsamości w zakresie zagnieżdżonych wyzwalacz, używane przez replikację.
Przykłady
W poniższym przykładzie wstawia wiersz do tabela z (kolumna tożsamościLocationID) i wykorzystuje @@IDENTITY Aby wyświetlić wartość tożsamość używana w nowym wierszu.
USE AdventureWorks;
GO
--Display the value of LocationID in the last row in the table.
SELECT MAX(LocationID) FROM Production.Location;
GO
INSERT INTO Production.Location (Name, CostRate, Availability, ModifiedDate)
VALUES ('Damaged Goods', 5, 2.5, GETDATE());
GO
SELECT @@IDENTITY AS 'Identity';
GO
--Display the value of LocationID of the newly inserted row.
SELECT MAX(LocationID) FROM Production.Location;
GO