Niveau
..........
En rapport...

Update ou Insert ?

La plupart du temps, avant d'insérer dans une base de données une nouvelle ligne, on doit vérifier si elle n'existe pas déjà. Si elle est déjà présente, on la met à jour, sinon, on l'ajoute.
Pour réaliser ce type de comportement, il existe 2 méthodes :

  • Faire un test de présence via un select, puis déterminer si on doit faire un insert ou un update
  • Utiliser ON DUPLICATE KEY.

C'est cette deuxième méthode qui nous intéresse.

Comment marche-t-elle ?

ON DUPLICATE KEY est une commande incorporé dans MySql depuis la version 4.1. Cela permet de rajouter une sorte de condition dans un insert.

sql
INSERT INTO panier VALUES('Objet1', 1) ON DUPLICATE KEY UPDATE quantite = quantite + 1;

Ce traduirais littéralement par :
Insere dans panier la ligne ('Objet1',1). Si Tu renvois une erreur de clef dupliqué, alors fait un upadate de quantite toujours dans la table panier

Les erreurs de clés dupliqué ce produisent lorsqu'un champ à l'attribut UNIQUE ou PRIMARY KEY et que l'on essaye d'ajouter une valeur déjà contenu par ce même champs sur un autre enregistrement.

Voir aussi

Soucre