2013-10-20 23 views
2

我有2個表A和表B;表B通過外鍵鏈接到表A.在存儲過程中使用逗號分隔值將記錄插入到SQL Server中的2個表中

TABLE A有幾分像這樣

PK Id 
DeliveryChannelValue 
DeliverychannelId 
Date time 

Table B結構具有這種結構

PK Id UniqueIdentifiers 
Date time 
FK tableA id 

現在,我得到的唯一標識符爲逗號分隔值,因此基於數量在該列表中的項目,我必須在表格A和表格B中創建相同數量的行。

如果它的數量ems中的逗號分隔值是3,那麼會有3行插入到表A中,3行插入到表B中。我試圖避免遊標。

請建議有效的方法來做到這一點。

+0

有你考慮使用觸發器? –

+2

您需要使用一個事務和兩個插入語句。應該不需要光標,但將逗號分隔列表轉換爲表格的函數將有所幫助。 – Hogan

+0

我正在使用SQL Server 2008 R2我分析了逗號分隔值並插入到臨時表中,然後嘗試在表中插入記錄問題是,我將如何獲取插入到表A中的每條記錄的身份記錄。 – user398707

回答

0

您可以使用this CodeProject project拆分功能來分隔這些值,然後使用已知的DateTime標記使表保持同步。這是假定這些值不經常更新,可能導致一個DateTime重複的問題:如果是這樣的話,你需要使用一個替代YOURDATE場的添加GUID值,如下:

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 
相關問題