-
@@IDENTITY
zwraca ostatnią wartość tożsamości wygenerowaną dla dowolnej tabeli w bieżącej sesji we wszystkich zakresach. Tu musisz być ostrożny , ponieważ obejmuje zakresy. Możesz uzyskać wartość z wyzwalacza, zamiast bieżącego oświadczenia.
-
SCOPE_IDENTITY()
zwraca ostatnią wartość tożsamości wygenerowaną dla dowolnej tabeli w bieżącej sesji i bieżącym zakresie. Ogólnie to, czego chcesz użyć .
-
IDENT_CURRENT('tableName')
zwraca ostatnią wartość tożsamości wygenerowaną dla określonej tabeli w dowolnej sesji i dowolnym zakresie. Pozwala to określić, z której tabeli chcesz uzyskać wartość, na wypadek gdyby dwa powyższe elementy nie były dokładnie tym, czego potrzebujesz (bardzo rzadkie ). Ponadto, jak wspomniał @Guy Starbuck:„Możesz tego użyć, jeśli chcesz uzyskać aktualną wartość TOŻSAMOŚCI dla tabeli, do której nie wstawiłeś rekordu”.
-
OUTPUT
klauzula INSERT
Instrukcja pozwoli Ci uzyskać dostęp do każdego wiersza, który został wstawiony za pomocą tej instrukcji. Ponieważ jest ograniczony do konkretnego stwierdzenia, jest prostszy niż inne powyższe funkcje. Jest jednak trochę bardziej gadatliwy (musisz wstawić do tabeli zmiennej/tabeli tymczasowej, a następnie wykonać zapytanie) i daje wyniki nawet w przypadku błędu, w którym instrukcja jest wycofywana. To powiedziawszy, jeśli Twoje zapytanie korzysta z równoległego planu wykonania, jest to jedyna gwarantowana metoda do uzyskania tożsamości (bez wyłączania równoległości). Jest jednak wykonywany przed wyzwalacze i nie mogą być używane do zwracania wartości generowanych przez wyzwalacze.