Zusammenführen mit mehreren Updates und Einfügungen

8

Grundsätzlich habe ich eine SQL Server 2008 R2-Datenbank. Die Datenbank hat eine Tabelle namens Node and Link. Der Link enthält eine StartNodeId und eine EndNodeId, die sich auf eine ID im Knoten beziehen. Die Datenbank benötigt auch eine Link-Tabelle zwischen Knoten und Link, um z. B. zu überprüfen, ob dieser Knoten zu diesem Link gehört oder welche Knoten zu diesem Link gehören. Die Link-Tabelle enthält einen Identitätsschlüssel, NodeId und LinkId. Mein Problem ist, wenn ich meine Inserts mache, versuche ich Merge-Anweisungen zu verwenden, die nicht in der Lage zu tun, was ich versuche

Als ich es versuchte

%Vor%

Ich erhalte die Fehlermeldung "Eine Aktion des Typs 'WENN GEPASST' darf nicht mehrmals in einer 'UPDATE' Klausel einer MERGE-Anweisung vorkommen"

Wenn ich versuche, Startknoten und Endknoten separat einzugeben, z. B.

%Vor%

Ich lande mit Links gelöscht (nicht überraschend), also im Grunde habe ich mich gefragt, ob jemand wusste, eine gute Möglichkeit, dies zu tun? Wenn es möglich ist, möchte ich es immer noch mit einer Merge-Anweisung machen können

Danke

Bearbeiten: Ich habe eine andere Möglichkeit gefunden, diese Daten mit einer anderen Quelle zusammenzuführen, das Problem ist jetzt gelöst.

    
Manatherin 24.01.2011, 16:57
quelle

1 Antwort

17

Vielleicht vermisse ich etwas, aber

Die Fehlermeldung beschwert sich, dass Sie nicht mehrere WHEN MATCHED haben können, damit Sie

konvertieren können %Vor%

bis

%Vor%

Aber der erste Zweig von CASE wird getroffen, wenn TARGET.NodeId = Source.StartNodeId und auch TARGET.NodeId = Source.StartNodeId und ähnlich für den zweiten Zweig, dann scheint das nach

zu vereinfachen %Vor%     
Martin Smith 24.01.2011 17:12
quelle