2014-09-02 41 views
0

好吧,我有兩個表:如何用正確的IDENTITY值填充表變量?

CREATE TABLE Temp(
     TEMP_ID int IDENTITY(1,1) NOT NULL, ...) 

CREATE TABLE TEMP1(
    TEMP1_ID int IDENTITY(1,1) NOT NULL, 
    TEMP_ID int, ...) 

它們與TEMP_ID外鍵鏈接。 在存儲過程中,我需要創建大量的 Temp和Temp1行並對其進行更新,因此我創建了一個表變量(@TEMP),並且正在處理它,最後將一個大的INSERT插入到Temp中。我的問題是:如何使用正確的TEMP_ID填充@Temp而無需從多個會話安全地插入?

回答

0

您可以使用Scope_Identity()來找出最後插入的行。您可以使用Output子句來查找所有新插入(或更新)的行。

create table #t1 
(
    id int primary key identity, 
    val int 
) 


Insert into #t1 (val) 
    output inserted.id, inserted.val 
    values (10), (20), (30) 
在這種情況下,INSERT到來自@temp溫度後,我可以檢索TEMP_ID的列表
+0

,但如何解決TEMP1的TEMP_ID的呢? – 2014-09-02 06:13:30

+0

@QuéPadre看看http://stackoverflow.com/questions/6074999/t-sql-insert-original-value-in-output-clause – 2014-09-02 08:53:56