使用逗号分隔值将记录插入SQL Server中的2个表

时间:2013-10-20 15:52:38

标签: sql sql-server tsql sql-server-2008-r2

我有2张桌子A和桌子B;表B通过外键链接到表A.

TABLE A的结构有点像

PK Id
DeliveryChannelValue
DeliverychannelId
Date time 

Table B具有此结构

PK Id UniqueIdentifiers
Date time 
FK tableA id

现在在存储过程中,我将唯一标识符作为逗号分隔值,因此根据该列表中的项目数,我必须在表A和表B中创建相同数量的行。

如果以逗号分隔值的项目数为3,那么将有3行插入到表A中,3行将插入到表B中。我试图避免使用游标。

请建议有效的方法。

1 个答案:

答案 0 :(得分:0)

您可以使用this CodeProject project拆分功能分隔值,然后使用已知的DateTime标记使表保持同步。这假设这些值不会不断更新,这可能会导致DateTime重复问题:如果是这种情况,您需要使用添加GUID值代替YOURDATE字段,如下所示:

DECLARE @DATESTAMP DATETIME = GETDATE()

INSERT INTO TABLE_A (ID, YOURDATE)
SELECT item, @DATESTAMP
FROM dbo.[FN_SPLIT](@yourinputstring)

GO

INSERT INTO TABLE_B(YOURDATE, TABLE_A_ID)
SELECT @DATESTAMP, ID
FROM TABLE_A 
WHERE YOURDATE = @DATESTAMP

GO