Maison >base de données >tutoriel mysql >Existe-t-il un serveur SQL équivalent à la mise à jour de clé en double de MySQL ?
SQL Server offre-t-il une fonctionnalité similaire à ON DUPLICATE KEY UPDATE de MySQL ?
Dans MySQL, ON DUPLICATE KEY UPDATE permet la mise à jour automatique d'une ligne lorsqu'une insertion provoquerait une valeur en double dans un index unique ou une clé primaire. Dans SQL Server, l'équivalent le plus proche de cette fonctionnalité est l'instruction MERGE.
Utilisation de MERGE pour mettre à jour ou insérer
L'instruction MERGE combine les fonctionnalités d'INSERT, UPDATE, et DELETE en une seule opération. Il peut être utilisé pour :
Exemple
Considérons la requête suivante, qui tente d'insérer une ligne dans une table si la ligne n'existe pas déjà :
INSERT INTO MyTable (Id, Name) VALUES (1, 'John Doe')
Si une ligne avec l'ID 1 existe déjà, cette requête échouera en raison d'une violation de clé primaire. Cependant, nous pouvons utiliser MERGE pour gérer ce scénario :
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);
Dans cet exemple, l'instruction MERGE effectuera les actions suivantes :
La clause WITH (HOLDLOCK) garantit que la table cible est verrouillée pendant l'opération pour empêcher les mises à jour simultanées de provoquer des problèmes de cohérence des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!