2013-05-10 36 views
0

我已經搜索了一個解決方案,並找到了幾個示例,但沒有一個適合我的場景。將相同的GUID插入到兩個表中

我有一個[source]表和兩個目標表[table1]和[table2]。 [table1]和[table2]都有一個Id列(UniqueIdentifier)。 [table1]中的所有列都有默認值,包括UniqueIdentifier。

[table1]是[table2]的父級,包含日期 - 時間數據,用於跟蹤何時插入,修改,刪除記錄。 [table2]是一個詳細表格,描述[table1]中的記錄。

我需要從[source]中選擇所有內容,並將其插入到[table1]和[table2]中,保留[table1]插入期間生成的Id,因此我可以將同一個Id與選定的數據一起插入[table2]來自[來源]。

[source] 
col1, col2, col3, col4 <------This data needs to be inserted into [table2] 

[table1] 
Id*, date-created, date-modified, to-date <-------these all have default values 

[table2] 
Id*, name, description, category <-------Id generated in [table1] needs to match here 

希望我明確了這一點。讓我知道你是否需要更多細節。謝謝!

+0

相關:http://stackoverflow.com/q/42648/1583 – Oded 2013-05-10 16:12:16

+0

看起來你需要在第二個表中創建一個外鍵,鏈接到第一個(主)表中的GUID – 2013-05-10 16:12:30

+0

外鍵存在已經,但我仍然不確定SELECT | INSERT將被執行。你會碰巧有這樣的例子嗎? – Jonathan 2013-05-10 16:37:44

回答

0

我讀https://stackoverflow.com/a/3712735/2370655

CREATE PROCEDURE Import_ManagedEntity_Insert 
@TypeId int, 
@CategoryId int 

AS 
BEGIN 

SET NOCOUNT ON; 

MERGE INTO ManagedEntityDetail AS med 
USING z_test AS source_table 
ON 1=0 
WHEN not matched THEN INSERT (Id, QualifiedName, DisplayName, Description, CategoryId) 
VALUES (newid(), source_table.Url, source_table.Name, source_table.Description, @categoryid) 
OUTPUT inserted.id, @typeid, getutcdate(), getutcdate(), 'system', null 
INTO ManagedEntity; 

END 
GO 

感謝您的答覆後,能解決我的問題。

+0

還有一個[專用於技術本身的問題](http://stackoverflow.com/questions/5365629/using-merge-output-to-get-mapping-between-source-id-and-target-id「Using合併..輸出獲取source.id和target.id之間的映射「)。 – 2013-05-11 21:33:59

0

您可能可以使用t-sql OUPUT子句來完成此操作。困難的部分將把新插入的table1記錄與源代碼相關聯,以便插入到table2中。這取決於你是在一次或按批次做這一條記錄。

http://msdn.microsoft.com/en-us/library/ms177564.aspx

+0

我使用幾個不同的示例並在閱讀MSDN文章之後,使用OUTPUT進行了一段時間的演示。我必須完全不知道如何使用OUTPUT - 完全不成功。你能提供一個解決我的問題的例子嗎? – Jonathan 2013-05-10 16:39:10

相關問題