Udostępnij za pośrednictwem


@@IDENTITY (Transact-SQL)

@@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