我想通过声明如下变量在另一个查询中使用插入查询的ID。但是第二个查询看不到声明的变量。如何在第二个插入查询中使用第一个插入的ID
DECLARE @myVariable table (PKProductVariantId INT)
INSERT INTO STProductVariant
(FKProductId,FKProductDetailValueId_,ProductVariantCode,IsActive,StockQuantity)
OUTPUT inserted.PKProductVariantId into @myVariable
values(1,1,'test',1,1)
然后
insert into STBranchProductVariantRelation(FKProductVariant,FKBranch,IsActive)
values (@myVariable,1,1)
答案 0 :(得分:0)
您要使用STProductVariant中插入行中的pk吗?试试这个:
INSERT INTO STProductVariant (...) VALUES (...);
SET @lastId := LAST_INSERT_ID();
INSERT INTO STBranchProductVariantRelation (FKProductVariant, FKBranch, IsActive)
VALUES (@lastId, 1, 1);
答案 1 :(得分:0)
您需要使用insert . . . select
:
insert into STBranchProductVariantRelation(FKProductVariant, FKBranch, IsActive)
select t.PKProductVariantId, 1, 1
from @myVariable t;
我认为您通过将 table 变量命名为“变量”来混淆自己。然后,您会认为它是一个标量变量。
我将这段代码写为:
DECLARE @ids table (PKProductVariantId INT);
INSERT INTO STProductVariant
(FKProductId, FKProductDetailValueId_, ProductVariantCode, IsActive, StockQuantity)
OUTPUT inserted.PKProductVariantId into @ids
VALUES(1, 1, 'test', 1, 1);
insert into STBranchProductVariantRelation(FKProductVariant, FKBranch, IsActive)
select i.PKProductVariantId, 1, 1
from @ids i;