Je veux ajouter une ligne à une table de base de données, mais si une ligne existe avec la même clé unique, je veux mettre à jour la ligne.
Par exemple :
INSERT INTO table_name (ID, NAME, AGE) VALUES(1, "A", 19);
Supposons que la clé unique soit ID
et dans mon Base de données il existe une ligne avec ID = 1
. Dans ce cas, je veux mettre à jour cette ligne avec ces valeurs. Normalement, cela donne lieu à une erreur.
Si j'utilise INSERT IGNORE
il ignorera l'erreur, mais il ne sera toujours pas mis à jour.
13 votes
SQL a besoin d'une syntaxe officielle pour ce cas d'utilisation qui ne force pas la duplication des valeurs dans la syntaxe et préserve la clé primaire.
1 votes
Pour obtenir l'identifiant influencé, voir MySQL ON DUPLICATE KEY - dernière insertion de l'id ?
1 votes
Attention : Depuis la version 5.7, cette approche ne prend pas directement en charge la clause WHERE dans le cadre de l'opération INSERT/UPDATE. De plus, une UPDATE compte en fait comme deux opérations distinctes (DELETE et INSERT) ... au cas où cela aurait de l'importance pour l'audit. (Learnbit)