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 :

Clés étrangères et contraintes MySQL


Sujet :

MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 29
    Points
    29
    Par défaut Clés étrangères et contraintes MySQL
    Salut à tous,

    J'ai dans une base de données ("pcc_osclass")
    une table "oc_pcc_t_region" qui contient 5 champs:

    pk_i_id (int,AI,unsigned)
    fk_c_country_code(char)
    s_name(varchar)
    s_slug(varchar)
    b_active(tinyint,defaut:1)

    Je voudrais remplacer les valeurs de cette table par d'autres valeurs (voir l'image Table.jpg)
    J'ai d'abord essayé de vider la table, puis de la supprimer, pour ensuite la recréer,
    mais évidemment avec les contraintes imposées par la clé étrangère, ça ne fonctionne pas;
    le remplacement, non plus...Je pense qu'il faut faire un UPDATE, mais comme je n'ai plus fait
    de sql depuis un bail, je bloque et j'ai besoin d'aide pour cela.

    Merci.
    Images attachées Images attachées    

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Bonsoir Anandamine,


    Citation Envoyé par Anandamine
    Je voudrais remplacer les valeurs de cette table par d'autres valeurs (voir l'image Table.jpg)
    L’image est-elle celle des nouvelles valeurs de la table ? Si oui, pourriez-vous fournir une image (quelques lignes significatives) de la table avant remplacement ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Salut fsmrel,

    Les images sont celles des tables avant d'avoir fait la moindre opération,
    puisque rien de ce que j'ai tenté n'a fonctionné:
    TRUNCATE, DROP, REPLACE sont impossible à cause des contraintes...

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Bonjour Anandamine,


    Au vu du message #1701 :

    Manifestement il existe une table ocpcc_t_city dont une colonne fk_i_region_id fait référence à la colonne pk_i_id de la table ocpcc_t_region.


    Suite à votre opération de mise à jour, certaines des valeurs de la colonne fk_i_region_id deviendraient orphelines.

    Si vous voulez que la colonne fk_i_region_id contiennent toujours des références non orphelines, il faudrait préalablement procéder à un aménagement de la contrainte référentielle ayant pour source la table ocpcc_t_city et pour cible la table opcc_t_region :

    1) ALTER TABLE pcc_osclass.ocpcc_t_city DROP FOREIGN KEY opcc_t_city_ibfk_1 ;

    2) ALTER TABLE pcc_osclass.ocpcc_t_city ADD CONSTRAINT opcc_t_city_ibfk_1 FOREIGN KEY (fk_i_region_id) REFERENCES pcc_osclass.opcc_t_region (pk_i_id) ON UPDATE CASCADE ;

    De la sorte, au moment de la mise-à-jour, les valeurs initiales de la colonne fk_i_region_id de la table ocpcc_t_city seront remplacées par les nouvelles valeurs reprises de la colonne pk_i_id de la table opcc_t_region.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Salut fsmrel.

    Merci pour la réponse rapide et la précision,

    j'essaie ça ce soir, dès que je rentre chez moi.
    Je te tiens au courant quoiqu'il arrive..

    Bonne après-midi.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Salut fsmrel,

    J'ai fait ce que tu m'a indiqué, et comme je m'y attendais ça fonctionne...
    Malheureusemment il y beaucoup de tables dans cette BD, et plein de clés étrangères,
    ce qui fait que quand j'essaie de remplacer le contenu de la table ocpcc_t_region,
    le processus est interrompu et révèle d'autres contraintes.
    Ceci dit ce que tu m'a indiqué m'a permis de comprendre le principe, et je
    pense pouvoir me débrouiller.

    Merci bien, fsmrel.

    Nom : replace.jpg
Affichages : 298
Taille : 95,9 Ko

Discussions similaires

  1. Contrainte de clés étrangères
    Par CinePhil dans le forum Débuter
    Réponses: 4
    Dernier message: 04/03/2008, 22h26
  2. [MySQL] Clés étrangères avec PHP et MySQL
    Par HWICE dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/02/2008, 19h26
  3. Réponses: 2
    Dernier message: 29/07/2007, 11h48
  4. [Débutant ACCESS] Contrainte de clés étrangères
    Par elgringo2007 dans le forum Access
    Réponses: 2
    Dernier message: 12/06/2006, 18h56
  5. Contraintes de clés étrangères non respectées
    Par parfait dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/07/2004, 12h48

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