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 :

comment ajouter une clé étrangère dans une table


Sujet :

MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Points : 134
    Points
    134
    Par défaut comment ajouter une clé étrangère dans une table
    Bonjour ,
    Je veux ( je dois c'est plus vrai) réaliser un qcm en php.
    J'ai un cours et des questions reponses.
    J'ai crée ma table cours qui contiendra les cours
    avec une commande du genre
    create table cours(idCours int primary key auto_increment,titre varchar(20),texte varchar(40) ) ;

    J'ai voulu créer ma table réponse et c'est là que je retrouve tout c**.
    Comment on fait pour rajouter la clé étrangère idCours dans la table réponse.

    Si j'ai compris ce que j'ai vu rapidement sur google , il faut créer la table reponse puis faire "alter table add foreign key "
    est ce que c'est bien ça ou bien
    que faut il faire ???

    Merci de votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Vous pouvez faire cela en un seul ordre SQL dans le create table.

    Lisez les cours que j'ai écrit sur le sujet : http://sqlpro.developpez.com/cours/s...partie2#L7.1.7
    http://sqlpro.developpez.com/cours/s...partie2#L7.2.4
    http://sqlpro.developpez.com/cours/s...e=partie2#L7.3

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    Un autre article explique l'utilisation des contraintes en expliquant comment les utiliser efficacement.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Points : 134
    Points
    134
    Par défaut
    Merci beaucoup ,
    j'apprécie vraiment ce site , une question et immédiatement deux réponses par des super pros

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Points : 134
    Points
    134
    Par défaut
    J'avais pas marqué le post comme résolu parce que j'étais sur que j'aurai des questions après avoir lu les liens.
    Juste une dernière question :
    Je n'ai pus créer ma deuxième table qu'en utilisant la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create table reponse(id........,Constraint foreign key (maCleEtrangere) references matable (maCleEtrangere) ) engine=innodb ;
    Est ce que vous pouvez me confirmer que l'utilisation d'innodb est obligatoire pour mysql et que c'est la syntaxe classique.

    Merci

  6. #6
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Le moteur par défaut de MySQL (MyISAM) ne peut contrôler l'intégrité que de manière très restreinte.
    Pour utiliser des clé étrangère et bien d'autres partie du SGBD l'utilisation du moteur InnoDB est obligatoire.
    Attention le moté clé CONSTRAINT ne sert seulement qu'a nommer la contrainte.
    Même si CONSTRAINT FOREIGN KEY fonctionne il est préférable de donner un nom a la contrainte.
    Tu aurait pu créer ta table en deux partie si tu voulais de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE `reponse`(
    `id`........
    ) ENGINE = InnoDB;
     
    ALTER TABLE `reponse`
    ADD CONSTRAINT `FK_REPONSE_MATABLE` FOREIGN KEY (`maCleEtrangere`) REFERENCES `matable` (`id_de_matable`);
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Points : 134
    Points
    134
    Par défaut
    Merci beaucoup,en un post j'ai appris énormément.
    A bientôt pour d'autres questions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout d'une clé étrangère dans une table
    Par SteffieLili dans le forum QlikView
    Réponses: 11
    Dernier message: 25/03/2014, 15h54
  2. Réponses: 8
    Dernier message: 26/03/2010, 08h16
  3. Comment ajouter un 2eme MenuBar dans une frame ?
    Par melanoche dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/05/2007, 16h33
  4. Definir une clé étrangère dans une table existante?
    Par gui38 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/12/2006, 13h54
  5. PB comment ajouter la clé etrangere dans une table
    Par kundun dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/11/2006, 15h48

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