所以我有三个彼此相关的表格:" Card"," Icon",以及一个联结表" CardIcons"。 CardIcons有两列," CardID"和" IconID",链接到两个表。我创建了一个表类型,使我能够在Card表中进行批量插入,其中有一个额外的列不在Card表中,标记为" IconIDs",它只是以逗号分隔的整数。我想要做的是创建一个存储过程,将该表类型作为参数,对于该表参数中的每一行,我想在Card表中插入1行,从该插入中获取生成的标识(CardID),并在" IconIDs"中插入每个int的联结表。具有该新CardID的列。有一个简单的方法吗?
答案 0 :(得分:0)
使用SCOPE_IDENTITY功能并将您的INSERT包装到交易中。这是基本的想法(不包括查询TVP和解析图标ID的代码):
BEGIN TRANSACTION
DECLARE @CardID INT
[loop through TVP]
INSERT INTO Cards (CardID) VALUES ([value])
SET @CardID = SCOPE_IDENTITY()
[loop through icon id's]
INSERT INTO Icon (CardID, IconID) VALUES (@CardID, [icon id value])
[end loop]
[end loop]
COMMIT TRANSACTION