2015-10-15 26 views
0

我使用Transact-SQL的另一個表,例如讓我們說我有...T-SQL複製行相同的表中,並與外鍵

TABLE_1

ID_MAIN DATA 
1  red 
2  blue 

TABLE_2

ID_SUB ID_MAIN TYPE 
3  1  soft 
4  2  rough 

...並在「TABLE_1」每一個條目我想用一個新的唯一ID(主鍵),將其複製到「TABLE_1」和「TABLE_1」中的每一個條目我也希望將「TABLE_2」中引用它的條目(外鍵)複製到一個新的ID中。

TABLE_1

ID_MAIN DATA 
1  red 
2  blue 
3  red 
4  blue 

TABLE_2

ID_SUB ID_MAIN TYPE 
3  1  soft 
4  2  rough 
5  3  soft 
6  4  rough 

我瞭解如何複製一個條目,並改變某些領域,例如

INSERT INTO TABLE_1 (ID_MAIN, DATA) 
    SELECT NEWID(), DATA 
    FROM TABLE_1 

我的問題是更多的齒輪至我怎麼能重複加送TABLE_1每個條目,複製與新ID的條目,每個條目基礎上增加新的行TABLE_2其中引用這些IDS從TABLE_1

希望這是有道理的,如果它不給我,哈哈

不知道

感謝您的幫助!

+0

TABLE_1.ID_MAIN和TABLE_2.ID_SUB是否標識字段(意味着您不必故意插入下一個值),或者不需要(意思是您必須執行一些數學操作纔能有意插入下一個值)? –

+0

@JimHorn TABLE_1.ID_MAIN和TABLE_2.ID_SUB是使用newid()創建的uniqueidentifier類型。所以它們只是識別領域。 – wellmannered

回答

1

如果我理解你想要的東西,如:

INSERT INTO 
    Table_2 
    (
     table_2_id 
     , table_1_id 
     , type 
    ) 
SELECT 
    table_2_id = ROW_NUMBER() OVER (ORDER BY a.table_1_id) 
    , table_1_id = a.table_1_id 
    , type 
     CASE 
     WHEN a.data = 'red' THEN 'soft' 
     WHEN a.data = 'blue' THEN 'rough' 
     END 
FROM 
    table_1 a 

這將採取所有記錄從表1中,將它們插入到表2,分配基於表1的數據列的類型,並增加了ID表2.

+0

抱歉,但這不是我想要完成的。數據和類型字段只是這個例子的佔位符。我更關心複製兩個表中的每一行,但保持每個表中兩個條目之間的關係。所以如果表2中的第1行是表1中第1行的外鍵,我希望維護相應副本的關係,唯一不同的是第1行副本將具有不同的唯一標識符 – wellmannered

+0

,所以如果我們做了副本,那麼第2行在表2中將包含表1中第2行的外鍵,但表1中的第2行將具有不同的唯一標識符, – wellmannered