Это верно. @@ IDENTITY нельзя использовать так, как вы думаете. Он может быть использован только после вставки в таблицу. Давайте рассмотрим это для сценария:
У вас есть две таблицы: Order (первичный ключ: OrderID), OrderDetails (внешний ключ: OrderID)
Вы выполняете
INSERT INTO Заказать
ЗНАЧЕНИЯ ( «Подушка»)
- Обратите внимание, что OrderId не упоминается в значениях, поскольку это автоматический номер (первичный ключ)
Теперь вы хотите выполнить вставку в OrderDetail. Но вы не всегда помните, сколько записей было в таблице Order до того, как вы вставили запись для «Pillows», и, следовательно, вы не помните, какой последний PrimaryKey был вставлен в таблицу Order. Вы могли бы, но даже тогда вы не хотели бы специально упоминать о вставке (скажем, OrderID = 1) при вставке в таблицу OrderDetail.
Следовательно, ваша вставка OderDetail будет работать примерно так:
INSERT INTO OrderDetail
ЦЕННОСТИ (@@ IDENTITY, «Мягкие подушки»)
Надеюсь, это объясняет пользователя @@ IDENTITY.