Если у меня есть оператор вставки, такой как:
INSERT INTO MyTable
(
Name,
Address,
PhoneNo
)
VALUES
(
'Yatrix',
'1234 Address Stuff',
'1112223333'
)
Как установить @var INT
значение идентификатора новой строки (вызывается Id
) с помощью предложения OUTPUT? Например, я видел примеры размещения INSERTED.Name в табличных переменных, но я не могу получить его в не табличной переменной.
Я пытался OUPUT INSERTED.Id AS @var
, SET @var = INSERTED.Id
но ни один не работал.
sql
sql-server-2005
insert
Yatrix
источник
источник
OUTPUT
предложения.OUTPUT
пишет в таблицу. Это может быть табличная переменная, временная таблица, ....Ответы:
Вы можете получить только что вставленный ID, выводимый на консоль SSMS следующим образом:
Вы также можете использовать это, например, из C #, когда вам нужно вернуть идентификатор в вызывающее приложение - просто выполните SQL-запрос с
.ExecuteScalar()
(вместо.ExecuteNonQuery()
), чтобы прочитать полученный результатID
.Или, если вам нужно захватить недавно вставленный
ID
в T-SQL (например, для дальнейшей обработки), вам нужно создать переменную таблицы:Таким образом, вы можете поместить в них несколько значений
@OutputTbl
и выполнить их дальнейшую обработку. Вы также можете использовать «обычную» временную таблицу (#temp
) или даже «настоящую» постоянную таблицу в качестве «выходной цели» здесь.источник
real persistent table
- это невероятно, потому что это означает, что вы можете одновременноINSERT
получать информацию вTWO
таблицах.SCOPE_IDENTITY()
работает лучше для этого.