与另一个表同时插入联结表

时间:2014-05-21 21:07:16

标签: sql-server stored-procedures

所以我有三个彼此相关的表格:" Card"," Icon",以及一个联结表" CardIcons"。 CardIcons有两列," CardID"和" IconID",链接到两个表。我创建了一个表类型,使我能够在Card表中进行批量插入,其中有一个额外的列不在Card表中,标记为" IconIDs",它只是以逗号分隔的整数。我想要做的是创建一个存储过程,将该表类型作为参数,对于该表参数中的每一行,我想在Card表中插入1行,从该插入中获取生成的标识(CardID),并在" IconIDs"中插入每个int的联结表。具有该新CardID的列。有一个简单的方法吗?

1 个答案:

答案 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