2013-07-05 2 views

Antwort

2

Wenn Sie versuchen, Ihre Quelle mit Ihrem Ziel zu verbinden, ist es nicht sinnvoll, eine Zeile einzufügen, wenn sie im Ziel gefunden wurde. Sie können es jedoch aktualisieren oder löschen. Wenn Sie das einfügen, was bereits vorhanden ist, werden Duplikate erstellt.

+0

+ Sie können WENN nicht abgestimmt, wenn Sie Einsätze in der gleichen Anweisung –

1

Wie Sie einfügen möchten, wenn Sie eine Übereinstimmung finden, nehme ich an, dass die Bedingung der ON-Klausel erfüllt ist, aber ein anderes Feld ist anders. Erwägen Sie, dieses Feld in die ON-Klausel mit AND aufzunehmen, um zwischen vorhandenen Zeilen und einzufügenden Zeilen zu unterscheiden.

+1

behandeln, was ziemlich viel, was ich getan habe, musste nur durch einige Reifen für dieses Projekt springen. Meine Situation wäre einfacher gewesen, wenn ich 'WENN MATCHED AND ... INSERT' hätte machen können. Hat mich interessiert * warum * MS hat es so entworfen tho. –

+1

aus welchen Gründen auch immer - dieser Zusammenführungsausdruck löst viele Probleme in einem Schnitt. Bevor Sie eine Sequenz von DELETE, UPDATE und INSERT und zusätzliche INSERTs schreiben mussten, um die Prozedur zu protokollieren. Innerhalb dieser Transaktion mussten Sie sicherstellen, dass Objekte für ihre Dauer gesperrt wurden. Was für ein Patzer! jetzt seine eine Aussage, also alle Sperren, die von db-engine gehandhabt werden, jeder logische Bedarf kann gehandhabt werden, und Sie haben diese nette Ausgangsklausel ... –

0

Gesunder Menschenverstand sagt: Wenn Sie es bereits dort (die Aufzeichnung) haben, warum möchten Sie es wieder einfügen? Ganz zu schweigen davon, dass das "Matching" normalerweise auf einem nicht duplizierten Schlüssel liegt. Wenn Sie eine Situation finden, in der ein passender Datensatz erneut eingefügt werden muss, lassen Sie uns wissen, um Ihnen zu helfen.

0

Ich denke, der Fall könnte sein, wenn ich die Geschichte verfolgen will. z.B. Telefonfeld; Ich möchte sehen, was das Telefon war, bevor du es änderst.

Verwandte Themen