Ich habe die Geige ziemlich drastisch reduziert, aber ich denke, die Absicht scheint durch. [Def]
ist eine [DefaultClassification]
Tabelle und [Cls]
eine [Classification]
Tabelle mit einigen alten Datensätzen, die hinzugefügt werden müssen. Die DefaultClassification-Tabelle wird in Zukunft verwendet, um neue Gruppen von Datensätzen in einer weiteren Tabelle zu erzeugen, und wir "brechen" ein vorhandenes Bit auf von Logik / Daten mit diesem Prozess.
Ich habe mein Bestes getan, um das Ganze auf das Wesentliche zu reduzieren, aber ich habe einen ähnlichen Prozess, der direkt nach diesem ausgeführt wird. Daher möchte ich bewährte Methoden kennenlernen und herausfinden, warum diese Abfrage fehlerhaft ist.
Als ich dies schrieb, wollte ich, dass es in einer Umgebung ab 2008 ausgeführt wird, skriptgesteuert oder manuell in SSMS. Ich weiß nicht, dass es kein Skript gibt, aber es könnte sein. Im Moment wird es komplett von Hand betrieben. Das Rollback und die Auswahl oben über den Drucknachrichten am Ende sind darauf zurückzuführen, dass es nicht richtig funktioniert. Daher kann ich es vor dem Festschreiben überprüfen. Ich würde jedoch ein gültiges Skript bevorzugen, mit dem ich mich nicht herumschlagen muss
Das spezifische Problem, das ich habe, befindet sich in Zeile 62 dieses Revisions-1-Links http://sqlfiddle.com/#!3/ef71e/1 und es sieht folgendermaßen aus:
RECHTE AUSSENVERBINDUNG [Def] tcd
Wenn ich das RECHTS nach LINKS drehe, wird die Einfügung ausgeführt, es werden jedoch keine Duplikate erkannt (um das Einfügen zu verhindern). Wenn ich das RECHTE mache, werden Duplikate erkannt, aber keine Einfügungen verarbeitet.
Was habe ich gebrochen? Und warum?
Und mir wurde gesagt, dass die Verwendung des @@ERROR
Juju schlecht war, aber ich weiß nicht warum, also Bonuspunkte (ein Kopfgeld von 100 Wiederholungen) auch für diese Erklärung.