После первой вставки в таблицу CharsToItem
, @@Identity
возвращает идентификатор вновь вставленного элемента в CharsToItem
.
Поэтому после вставки в Items
сохраните идентификатор в переменной
DECLARE @itemId int -- Variable to store the last ItemId.
BEGIN TRANSACTION;
INSERT INTO Items (Name, CategoryId) VALUES ('My Tv', 5);
SET @itemId = SCOPE_IDENTITY(); -- Store the new ItemId
INSERT INTO CharsToItem (ItemId, Value) VALUES (@itemId, '65 Inch');
INSERT INTO CharsToItem (ItemId, Value) VALUES (@itemId, '3840x2160');
COMMIT;
Обратите внимание, что вам не нужно ВЫБРАТЬ последний идентификатор из чего-либо, @@IDENTITY
или SCOPE_IDENTITY()
уже возвращает этот последний идентификатор.
Обратите внимание, что SCOPE_IDENTITY()
безопаснее, чем @@IDENTITY
, так как @@IDENTITY
может вернуть идентификатор, созданный триггером, например.
См. этот ответ на этот вопрос SO: scope_identity vs ident_current .