假設您有兩個表處於一對一關係;即子表的主鍵也是將其鏈接到父表的外鍵。還假定父項的主鍵是標識字段(插入記錄時由數據庫分配的單調遞增整數)。在SQL中複製與標識字段的1對1關係
假設您需要將這兩個表中的記錄複製到第二對相同的表中 - 父項的主鍵是標識,將子項鍊接到父項的外鍵也是子項的主鍵。
我應該如何將一組表中的記錄複製到另一組表中?
我目前有三個解決方案,但我想知道是否還有其他人更好。
選項1:在目的地 父表暫時禁用 身份屬性。複製來自 父表的記錄,然後複製子表 保持 主鍵的相同值。跨越你的手指, 沒有衝突( 源表的主鍵已在目標表中存在 )。
選項2:暫時列添加到 目的地父表保持 「舊」(源)主鍵。從父表中複製 記錄, 允許數據庫分配新的主鍵 ,但將舊主鍵保存在臨時列中。 從子表, 通過的 舊的主鍵加入源子表的 目的地父表複製記錄,利用加盟 插入記錄到 目的地子表與新 主鍵。從目標父 表中刪除臨時 列。
選項3:複製順序 記錄由記錄,首先從父 到父,然後兒童對兒童,使用 DB-提供的功能的「最後 插入記錄的身份」,以確保 該鏈接保持不變。
在這些選項中,我認爲選項2是我的偏好。有沒有人更喜歡其他兩種選擇之一,如果是這樣,爲什麼?有沒有人有不同的「更好」的解決方案?
不幸的是,雖然大多數表具有自然的組合業務密鑰,但有三個表沒有。 :( – 2011-03-08 23:12:38