0
データベースに新しいデータをロードするか、既存のデータを更新する更新スクリプトがあります。しかし、私はこれらのエラーを取得します。FOREIGN KEY制約とのMERGEの競合
The MERGE statement conflicted with the FOREIGN KEY constraint
"FK_JW_MaterialData2PL_cMat_MaterialText".
The conflict occurred in database "TEST", table "dbo.JW_MaterialData", column 'camosGUID'.
と
The MERGE statement conflicted with the FOREIGN KEY constraint
"FK_JW_MaterialData_cMat_Material". The conflict occurred in
database "TEST", table "dbo.cMat_Material", column 'camosGUID'.
この関連する文です。もちろん、より多くのテーブルを持つMERGE
ステートメントがたくさんあります。
MERGE INTO [dbo].[JW_MaterialData2PL] ON camosGUID
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT
MERGE INTO [dbo].[cMat_Material] ON camosGUID
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT
MERGE INTO [dbo].[JW_MaterialData] ON camosGUID
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT
FK_JW_MaterialData2PL_cMat_MaterialText
とFK_JW_MaterialData_cMat_Material
ON UPDATE CASCADE
とON DELETE CASCADE
に設定されています。
おそらくこれは私がMERGE
声明を書いた注文の問題ですか?それとも、何が原因なのか知っていますか?
もう1つの質問:スクリプトを再実行すると、エラーは発生しません。ですから、sciptを2回実行するか、これが将来問題を引き起こす可能性がありますか?
注文の依存関係に基づいて、あなたの 'merge'文。例えば'cMat_Material'はあなたのエラーメッセージに基づいて' JW_MaterialData'の後になければなりません。 – SqlZim
はい、私は正しい順序が問題を解決したと思います。 'cMat_Material'>' JW_MaterialData'> 'cMat_PriceList'>' JW_MaterialData2PL'です。 – user1673665