-
@@IDENTITY
връща последната генерирана стойност на идентичност за която и да е таблица в текущата сесия във всички обхвати. Тук трябва да внимавате , тъй като е в различни обхвати. Можете да получите стойност от тригер, вместо от текущото си изявление.
-
SCOPE_IDENTITY()
връща последната генерирана стойност на идентичност за която и да е таблица в текущата сесия и текущия обхват. Общо взето това, което искате да използвате .
-
IDENT_CURRENT('tableName')
връща последната стойност на идентичност, генерирана за конкретна таблица във всяка сесия и всеки обхват. Това ви позволява да посочите от коя таблица искате стойността, в случай че двете по-горе не са точно това, от което се нуждаете (много рядко ). Също така, както спомена @Guy Starbuck, "Можете да използвате това, ако искате да получите текущата стойност на IDENTITY за таблица, в която не сте вмъкнали запис."
-
OUTPUT
клауза на INSERT
оператор ще ви позволи достъп до всеки ред, който е бил вмъкнат чрез този оператор. Тъй като е обхванат до конкретното изявление, то е по-ясно отколкото другите функции по-горе. Въпреки това е малкопо-подробно (ще трябва да вмъкнете в таблица променлива/временна таблица и след това да направите заявка за нея) и това дава резултати дори при сценарий за грешка, при който операторът се връща назад. Въпреки това, ако вашата заявка използва план за паралелно изпълнение, това е единственият гарантиран метод за получаване на самоличността (с изключение на паралелизма). Той обаче се изпълнява преди задейства и не може да се използва за връщане на генерирани от задействане стойности.