如何将一行的结果ID传递到下一个sql请求中?

时间:2019-12-16 10:54:30

标签: sql-server

假设我有两个关系表:表A和表B。

表B具有表A的外键,因此要在B中插入行,我们首先需要在A中插入行。 所以我在A中插入了第一行:

插入A(c1,c2)值(v1,v2)

我想要的是获取插入行的ID,以便在我插入表b时将其用作外键。该怎么做?

在寻找我发现here的解决方案时,我需要声明一个新表:

declare @KEY table(KEY int)

Insert into A (c1,c2)
Output inserted.Id into @kEY
values(v1,v2)

但是当我尝试使用它时:

 Insert into B (C1,C2) values(@KEY,v2) 

我收到一条错误消息,告知未声明@KEY!

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

表变量与标量变量不同。不能将values子句与表变量一起使用-您需要从中选择:

declare @KEY table(KEY int)

Insert into A (c1,c2)
Output inserted.Id into @kEY
values(v1,v2)

Insert into B (C1) 
Select [Key]
From @Key;