2013-10-05 144 views
-2

如何獲取最後插入的行的主鍵?獲取最後插入的行主鍵

PS注意,主鍵是VARCHAR類型,以便SCOPE_IDENTITY()不爲我工作..

我發現這樣一個問題:How can I get the last inserted primary key?但我無法理解他在說什麼

insert into T output inserted.pk values('new item');

任何人都可以請指導我這一點,因爲我是SQL Server的新手,並且無法理解這裏的觀點嗎?

謝謝。

+0

OUTPUT Inserted.Pk會給你一旦你運行插入查詢時得到的id,如果你想獲得最後插入的記錄的id(在運行插入查詢之前),那麼你可以使用'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 

[關鍵]應該是名稱您的PrimaryKey列。

之後,所有新的Keys將在@newIds表中。