Heim >Datenbank >MySQL-Tutorial >Gibt es ein SQL Server-Äquivalent zum ON DUPLICATE KEY UPDATE von MySQL?
Bietet SQL Server eine ähnliche Funktion wie MySQLs ON DUPLICATE KEY UPDATE?
In MySQL ermöglicht ON DUPLICATE KEY UPDATE die automatische Aktualisierung einer Zeile, wenn eine Einfügung zu einem doppelten Wert in einem eindeutigen Index oder Primärschlüssel führen würde. In SQL Server ist die MERGE-Anweisung das nächste Äquivalent zu dieser Funktion.
Verwenden von MERGE zum Aktualisieren oder Einfügen
Die MERGE-Anweisung kombiniert die Funktionalität von INSERT, UPDATE, und DELETE-Anweisungen in einer einzigen Operation. Es kann verwendet werden, um:
Beispiel
Betrachten Sie die folgende Abfrage, die versucht, eine Zeile in eine Tabelle einzufügen, wenn die Zeile existiert noch nicht:
INSERT INTO MyTable (Id, Name) VALUES (1, 'John Doe')
Wenn eine Zeile mit der ID 1 bereits existiert, schlägt diese Abfrage aufgrund einer Primärschlüsselverletzung fehl. Wir können jedoch MERGE verwenden, um dieses Szenario zu bewältigen:
MERGE INTO MyTable WITH (HOLDLOCK) AS target USING (SELECT 1 AS Id, 'John Doe' AS Name) AS source (Id, Name) ON (target.Id = source.Id) WHEN MATCHED THEN UPDATE SET Name = source.Name WHEN NOT MATCHED THEN INSERT (Id, Name) VALUES (source.Id, source.Name);
In diesem Beispiel führt die MERGE-Anweisung die folgenden Aktionen aus:
Die WITH (HOLDLOCK)-Klausel stellt sicher, dass die Zieltabelle während des Vorgangs gesperrt ist, um zu verhindern, dass gleichzeitige Aktualisierungen Datenkonsistenzprobleme verursachen.
Das obige ist der detaillierte Inhalt vonGibt es ein SQL Server-Äquivalent zum ON DUPLICATE KEY UPDATE von MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!