2013-10-05 9 views
-2

Как я могу получить первичный ключ последней вставленной строки?Получение последнего вставленного первичного ключа строк

PS Обратите внимание, что первичный ключ типа VARCHAR так SCOPE_IDENTITY() не работает для меня ..

Я нашел этот вопрос: How can I get the last inserted primary key?, но я не был в состоянии понять, что он говорит

Вставить в T Выход вставлен.pk значения ('новый элемент');

Может ли кто-нибудь, пожалуйста, направить меня на это, так как я новичок в SQL Server и не смог понять этот пункт здесь?

Спасибо.

+0

OUTPUT Inserted.Pk предоставит вам идентификатор, который генерируется после запуска запроса вставки, если вы хотите получить идентификатор последней вставленной записи (перед запуском запроса вставки), то вы можете использовать 'max()' , т. е. SELECT max ([id]) FROM [TableName]. каково ваше настоящее требование здесь? – aads

+0

Если первичный ключ имеет тип 'varchar', то какой-то пользовательский код его генерирует - это либо ваш собственный код непосредственно перед' INSERT', либо, скажем, триггером. Но в обоих случаях это настраиваемый код, поэтому вы не должны ожидать, что SQL Server сможет магически рассказать вам, что сделал этот код. –

ответ

0

Вы должны объявить переменную таблицы, например:

declare @newIds table(id nvarchar(255)); 

А затем вставить в эту таблицу выходных вставленных элементов, как это:

insert into DestinationTable(col1,col2) 
    output inserted.Key into newIds 
select 
    col1,col2 
from 
    SourceTable 

[Key] должно быть имя столбца PrimaryKey.

После этого все новые ключи будут в таблице @newIds.

Смежные вопросы