Tsql 如何用正确的标识值填充表变量?

Tsql 如何用正确的标识值填充表变量?,tsql,sql-server-2012,Tsql,Sql Server 2012,嗯,我有两张桌子: 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, ... ) 它们与临时ID外键链接。 在存储过程中,我需要创建大量 Temp和Temp1行并更新它们,所以我创建了一个表变量(@Temp),我正在处理它,最后在Temp中插入了一个

嗯,我有两张桌子:

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, ... )
它们与临时ID外键链接。 在存储过程中,我需要创建大量 Temp和Temp1行并更新它们,所以我创建了一个表变量(@Temp),我正在处理它,最后在Temp中插入了一个大的变量。我的问题是:如果不从多个会话中安全插入,如何用正确的临时ID填充@Temp

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


在这种情况下,从@Temp插入Temp后,我可以检索Temp_ID的列表,但是我如何修复Temp1的Temp_ID呢?@QuéPadre看一下
create table #t1
(
    id int primary key identity,
    val int
)


Insert into #t1 (val) 
    output inserted.id, inserted.val
    values (10), (20), (30)