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)