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 07/02/2012, 10h16   #1
Invité régulier
 
Inscription : décembre 2009
Messages : 53
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 53
Points : 8
Points : 8
Par défaut ON DUPLICATE KEY UPDATE: MAJ de toutes les colonnes

Bonjour.
Voila, j'ai un script chargé de remplir ma base de donnée. Cependant, les données de ce script sont susceptibles de changés au cours du temps. Aussi voudrai je que ce script gère l'update si il a déja été exécuté.
Voila ce que j'ai pensé faire:
Code :
1
2
INSERT INTO `portal` VALUES (10, 'aaaaa', 'bbbbb', 'ccccc')
ON DUPLICATE KEY UPDATE VALUES ('aaaaa', 'bbbbb', 'ccccc');
Malheureusement, ça ne marche pas, il semblerai que les colonnes à mettre à jour doivent être spécifiés une à une... N'y a t il pas moyen de mettre à jours toutes les colonnes hors clé primaire d'un coup?

Merci d'avance!
Cyanatide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 11h32   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Le ON DUPLICATE KEY UPDATE fonctionne comme un UPDATE.

Si tu veux mettre à jour plusieurs colonne, alors, il faut il faut mettre les colonnes à mettre à jour
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 14h25   #3
Invité régulier
 
Inscription : décembre 2009
Messages : 53
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 53
Points : 8
Points : 8
Le truc si j'utilise "column1=value, column2=value2", c'est que ça me complique le boulot.
J'ai plusieurs fichiers à reprendre pour ajouter la prise en compte de la modification et donc, mon copier collé aurait été grandement simplifié avec (10, 'aaaaa', 'bbbbb', 'ccccc'), si j'ajoute les colonnes à chaque fois ça va me prendre un temps considérable...

EDIT: Problème résolu en remplaçant le INSERT par un REPLACE:
INSERT INTO `portal` VALUES (10, 'aaaaa', 'bbbbb', 'ccccc') devient REPLACE INTO `portal` VALUES (10, 'aaaaa', 'bbbbb', 'ccccc'). L'enrigistrement est créé si il existe, mis a jour sinon.
Cyanatide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 11h50   #4
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Non, c'est INSERT INTO ... ON DUPLICATE KEY UPDATE ... qui va tenter de créer un enregistrement et le mettre à jour si il existe déjà.


REPLACE INTO ... lui va supprimer la ligne si elle existe déjà pour la recréer juste après. ce qui peut causer des problème avec les champs en auto increment
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h38.


 
 
 
 
Partenaires

Hébergement Web