Я говорю то же самое, что и другие парни, так что все правы, я просто пытаюсь прояснить это.
@@IDENTITY
возвращает идентификатор последней вещи, которая была вставлена при подключении вашего клиента к базе данных.
В большинстве случаев это работает нормально, но иногда запускается триггер и вставляется новая строка, о которой вы не знаете, и вы получаете идентификатор из этой новой строки вместо той, которую вы хотите
SCOPE_IDENTITY()
решает эту проблему. Он возвращает идентификатор последней вещи, которую вы вставили в код SQL , которую вы отправили в базу данных. Если триггеры идут и создают дополнительные строки, они не приведут к возвращению неправильного значения. Hooray
IDENT_CURRENT
возвращает последний идентификатор, который был вставлен кем-либо. Если какое-то другое приложение вставит еще одну строку в несчастное время, вы получите идентификатор этой строки вместо вашей.
Если вы хотите быть осторожным, всегда используйте SCOPE_IDENTITY()
. Если вы придерживаетесь @@IDENTITY
и кто-то решит добавить триггер позже, весь ваш код сломается.