Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/08/2011, 10h09   #1
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
Par défaut replace into et 2 clés uniques

Bonjour,

J'ai une table 'clients' avec 2 clés 'unique': id_client (int autoincrement) et codecomptable_client (CHAR 6)
Lorsque je fais un import depuis une application tierce, j'ai une requête
Code :
REPLACE INTO clients (codecomptable_client, ...
Le but est que si l'application tierce m'envoie un client avec le même code client, je fais une mise à jour et non un ajout.
Problème: la mise à jour modifie également le id_client. Or, il ne le faut pas (c'est le lien avec plein d'autres tables).

Comment dois-je m'y prendre ?
xdeslandes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 16h21   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 433
Points : 6 433
Le problème vient du fait que REPLACE, quand il trouve une valeur existante sur une colonne indexée UNIQUE, la supprime puis la remplace par la nouvelle, au lieu de faire un UPDATE.
Ce qui explique que la colonne auto-incrémentée est alors modifiée.

Il vaut mieux passer par une syntaxe INSERT INTO... ON DUPLICATE KEY UPDATE....
Voir la documentation de MySQL pour plus d'infos
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 16h25   #3
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
OK, d'ac. C'est logique en effet.

J'essaie cela et je reviens.
xdeslandes est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h43.


 
 
 
 
Partenaires

Hébergement Web