2012-02-09 8 views
1

MS SQLにデータをバルクロードします。このように効率的に行うために、私は一時的にFK制約をテーブル上で無効にしています(1つのテーブル8制約はすべてカスケード削除 "Set NULL"を削除しています)。制約チェックを再度有効にする前に、無効な外部キーをチェックしてNULLに設定する必要があります。バルクロード後に無効なFKデータを削除します

この目標を達成するにはどうすればよいですか?ありがとう。

答えて

3
UPDATE MyMainTable 
SET TableAID = CASE WHEN TableA.ID IS NULL THEN NULL ELSE TableAID END, 
    TableBID = CASE WHEN TableB.ID IS NULL THEN NULL ELSE TableBID END, 
FROM MyMainTable 
    LEFT JOIN TableA ON MyMainTable.TableAID = TableA.ID 
    LEFT JOIN TableB ON MyMainTable.TableBID = TableB.ID 
+0

素晴らしい作品です。 – Daniel

関連する問題