2017-07-12 1 views
0

J'ai une déclaration qui ressemble à ceci:Insertion d'enregistrements dans SQL Server, comment mettre à jour en cas de conflit?

Insert into table (value1, value2, value3) 
Values (%s, %s, %s) 

que je pouvais faire quelque chose où il va tenter d'insérer, mais sur la mise à jour des conflits valeur2 et valeur3 où value1 = valeur1 (c.-à-valeur1 est égal à la clé primaire en double qui essaie d'être inséré contre)?

+0

Utilisez l'instruction 'MERGE' au lieu de' INSERT' ?? –

+0

À quoi cela ressemblerait-il? Je n'ai jamais utilisé la fusion. – Jasonca1

+0

Lisez [la documentation officielle de MSDN pour 'MERGE'] (https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql), et jetez un coup d'œil à [The MERGE Déclaration dans SQL Server 2008] (https://www.red-gate.com/simple-talk/sql/learn-sql-server/the-merge-statement-in-sql-server-2008/) sur Simple-Talk pour plus d'informations sur le contexte –

Répondre

0
INSERT INTO table (value1, value2, value3) VALUES(%s, %s, %s) 
ON DUPLICATE KEY 
UPDATE value2=%s, value3=%s 
+0

C'est exactement ce que je cherchais. – Jasonca1

+2

Ceci est étiqueté avec le serveur sql et ceci est une construction mysql. –

+0

@ Jasonca1 Avez-vous essayé? Je ne pense pas que cela fonctionnera dans sql-server. – GuidoG