Ich habe dieses Update-Skript, in dem ich neue Daten in meine DB laden oder vorhandene Daten aktualisieren. Aber ich bekomme diese Fehler.MERGE-Konflikt mit der FOREIGN KEY-Einschränkung
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'.
und
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'.
Das sind die Aussagen, die relevant sind. Aber natürlich gibt es viel mehr MERGE
Aussagen mit viel mehr Tabellen.
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
und FK_JW_MaterialData_cMat_Material
sind ON UPDATE CASCADE
und ON DELETE CASCADE
gesetzt.
Vielleicht ist dies ein Problem der Reihenfolge, die ich die MERGE
Aussagen setzen? Oder weißt du, was der Grund sein könnte?
Und noch eine Frage: Wenn ich das Skript erneut ausführen, gibt es keine Fehler. Ist es also in Ordnung, den Test zweimal auszuführen oder könnte das in der Zukunft zu Problemen führen?
Bestellen Sie Ihr 'merge' auf Abhängigkeit beruhen. z.B. 'cMat_Material' sollte nach' JW_MaterialData' basierend auf Ihrer Fehlermeldung stehen. – SqlZim
ja, ich denke, die richtige Reihenfolge hat das Problem gelöst. 'cMat_Material'>' JW_MaterialData'> 'cMat_PriceList'>' JW_MaterialData2PL'. – user1673665