IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

Modifier un champ qui a un AUTO_INCREMENT


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Points : 20
    Points
    20
    Par défaut Modifier un champ qui a un AUTO_INCREMENT
    Bonjour,

    J'ai une table Ville(ville VARCHAR(163) NOT NULL, codeVille INT NOT NULL AUTO_INCREMENT, PRIMARY_KEY(ville))

    J'ai choisi de mettre ville comme clef primaire, car "Thonon-les-bains", "Thonon les bains", "Thonon" désignent ici la même ville, les tuples auront le même codeVille.

    Mais comment faire correspondre les codeVille alors qu'ils sont en AUTO_INCREMENT ? Un simple UPDATE ne fonctionne apparemment pas...

    Sinon je pourrais toujours ne pas mettre d'AUTO_INCREMENT, mais après il faudra faire une manip à chaque ajout de ville, cela dit, pas trop pénible avec une vue.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Si c'est la même ville, pourquoi vouloir l'avoir plusieurs fois dans la table des villes ?
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Points : 20
    Points
    20
    Par défaut
    Bonne question,
    si l'utilisateur, en saisissant son adresse, entre une ville qui n'est pas répertoriée, on l'ajoute dans la table Ville; si ensuite le gestionnaire s'aperçoit qu'un utilisateur habite à Evian, un autre à Evian-les-bains (et encore un autre à Evian les bains) - ces 3 nom de villes correspondent à une seule et même ville - et bien il n'aura qu'à modifier le codeVille de sorte que les 3 coïncident.
    Si alors un nouvel utilisateur entre la ville d'Evian-les-bains (ou Evian, etc...), la ville est déja répertoriée.

    Cela sert surtout lorsque je veux répertorié toutes les personnes qui d'une certaines ville, ça évite de faire la distinction entre deux écritures qui font allusion à une même chose - c'est pour prendre en compte les synonymes.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Et comment ferez vous pour distinguer deux villes différentes ayant le même nom ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Points : 20
    Points
    20
    Par défaut
    Des requêtes avec LIKE.
    Je conçois que l'idée est un peu tirée par les cheveux , pour ma modélisation je suis finalement parti sur l'idée qu'on aura récupéré une base de données listant toutes les villes du monde pour éviter ce problème.

    Mais la question est toujours valable

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par nscott32 Voir le message
    Des requêtes avec LIKE.
    LIKE n'y changera rien. De tout façon, avec le nom de commune en clef primaire, vous ne pourrez pas enregistrer à la fois Arques dans l'Aveyron, et Arques dans le Pas-De-Calais...
    Il convient de choisir des clef primaires les plus courtes possible (et on peut faire beaucoup mieux que du VARCHAR(163) ), ne portant aucune information, afin qu'elles n'aient jamais à être modifiées.
    C'est le seul intérêt de AUTO_INCREMENT, qui fournit une clef numérique, en vue d'être utilisée comme clef primaire
    Pour un autre usage, il convient d'utiliser autre chose (comme les SEQUENCES par exemple, mais je ne sais pas si MySQL les implémente...)

  7. #7
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonsoir

    Ne serait-il pas possible de passer par une table intermédiaire "Association"?

    Quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    T_VILLE
    _________
    T_VILLE_ID 
    T_VILLE_NOM
     
     
    T_VILLE_ORTHOGRAPHE
    ______________________
    T_VILLE_ORTHO_ID
    T_VILLE_ORTHO_VILLE
    T_VILLE_ORTHO_LIB
    avec T_VILLE_ORTHO_VILLE clé étrangère se rapportant à T_VILLE_ID

    Pierre

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Pourquoi ne pas utiliser une base de données complète des villes, ça évite aux utilisateurs de créer des villes car tu auras toujours des doublons.


    Sinon je pense que le plus simple serait de créer un script PHP qui permet de détecter ces "doublons".
    On choisit la ville à garder, et un script met à jour la table utilisateur avec le nouvel ID et supprime la ville doublon de la table ville.

Discussions similaires

  1. [MySQL] Comment modifier un champ qui fait référence à une autre table ?
    Par geeka dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/08/2014, 12h51
  2. [1.x] Fonction qui modifie un champ d'une table
    Par blasil64 dans le forum Symfony
    Réponses: 4
    Dernier message: 05/02/2010, 16h55
  3. modifier un champs teste qui modifier un autre automatiquement
    Par dad72 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/02/2009, 16h26
  4. Quels sont les champs qui ont été modifiés?
    Par Michelk12 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/12/2008, 11h11
  5. Réponses: 1
    Dernier message: 16/11/2007, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo