SELECT @@ IDENTITY
Возвращает последнее значение IDENTITY, созданное для соединения, независимо от таблицы, которая произвела значение, и независимо от области действия оператора, который произвел значение.@@ IDENTITY вернет последнее значение идентификатора, введенное в таблицу в текущем сеансе.Хотя @@ IDENTITY ограничено текущим сеансом, оно не ограничено текущей областью.Если у вас есть триггер в таблице, который вызывает создание идентификатора в другой таблице, вы получите идентификатор, который был создан последним, даже если это был триггер, который его создал.
SELECT SCOPE_IDENTITY()
Возвращает последнее значение IDENTITY, созданное для соединения, и оператором в той же области, независимо от таблицы, которая произвела значение.SCOPE_IDENTITY (), подобно @@ IDENTITY, вернет последнее значение идентификатора, созданное в текущем сеансе, но также ограничит его текущей областью.Другими словами, он вернет последнее значение идентификатора, которое вы явно создали, а не любое значение, созданное триггером или определенной пользователем функцией.
SELECT IDENT_CURRENT ('tablename')
Возвращает последнее значение IDENTITY, созданное в таблице, независимо от соединения, создавшего значение, и независимо от области действия оператора, создавшего значение.IDENT_CURRENT не ограничен областью действия и сессией;он ограничен указанной таблицей.IDENT_CURRENT возвращает значение идентификатора, сгенерированное для конкретной таблицы в любом сеансе и любой области действия.