2012-09-23 46 views
2

我有一個問題:我有3個表格,Table A,Table BTable C使用新的id值複製另一個表中的數據

Table A是其ID列爲FK鍵的主表,其中ID列爲Table BTable C

我想複製每個表中的相同數據,並將這些複製的行插入到它自己的表中,新的ID爲table A

我們通常做

insert into table A (id, name, age) 
    select name, age from table A 

這裏的新行得到一個新的ID,因爲id列是自動遞增。

但是,當我們將Table B的數據複製到Table B本身時,我們如何從Table A指定新的ID?這裏是FK鍵。

insert into table B (tab_B_Id, id, mark, subject) 
    select id, mark, subject 
    from tab B. 

[id is the pk of `Table A` and FK to `Table B` and `Table C`] 
  1. 如何插入值,新創建的ID從表格中的其它表?
  2. 有沒有什麼辦法,我們可以做到這一點,而無需指定 這兩個select列中的所有列名???

任何幫助將不勝感激。

回答

1
  1. 在SQL Server中,您可以通過scope identity來獲取插入的ID。或者,您可以使用INSERT語句中的OUTPUT子句。

  2. 如果你正在採取所有的列,你不需要指定它們,否則你會這樣做。請注意,明確指定列是很好的做法。如果添加新列,則不希望舊代碼的行爲不同。

+0

'SCOPE_IDENTITY'只在插入單行時才起作用 - 它會返回範圍中標識列的最後一個值;它不處理多行插入 –

0

問題1,這個怎麼樣:

insert into table B (tab_B_Id, mark, subject) select mark, subject from tab B 

然後

insert into table B(id) where tab_B_Id="THE ID VALUE THAT YOU GENERATED EARLIER" select id from table A 

我沒有,雖然測試代碼。可能有一些語法錯誤。 我不太明白你的問題2.

+0

嗨櫻花,感謝您的答覆。對於答案1,如何插入id值(這是表A中的新ID值 - 主表)? –

+0

嗨,感謝您的回覆。對於答案1,我將如何插入表A的ID值?主表格A具有一個PK和自動遞增的ID列。這個ID在表B中被引用爲FK。因此,當我們從表A複製2行並將複製的2行插入到同一個表(即表A)時,將爲複製行插入新的ID值。現在來看錶B.當我們對錶B做同樣的事時,我將如何將表A的引用爲FK的id值插入到表B中?我的第二個問題是,沒有指定select子句中的所有列名,有什麼辦法可以做到嗎? –

+0

哦......如何「插入表B(ID,標記,主題)從表A中選擇ID」?標記和主題應該是您想要插入的值。我想tab_B_Id是表B中的一個PK,所以它應該自動遞增,就像表A中的ID一樣。 – Sakura

相關問題