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

Requêtes MySQL Discussion :

Utilisé clé étrangère comme clé primaire


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Utilisé clé étrangère comme clé primaire
    Bonjour,

    Voilà, j'ai MySQL 5.1.37-1ubuntu5 et j'ai un soucis entre 2 tables

    CREATE TABLE IF NOT EXISTS `Guildes` (
    `IDGuilde` int(1) NOT NULL,
    `Nom` varchar(50) NOT NULL,
    `DroitPublication` int(1) NOT NULL,
    `IDPersonnage` int(1) NOT NULL,
    `IDServeur` int(1) NOT NULL,
    PRIMARY KEY (`IDGuilde`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    CREATE TABLE IF NOT EXISTS `GuildeAmie` (
    `IDGuilde1` int(1) NOT NULL,
    `IDGuilde2` int(1) NOT NULL,
    `Guilde1` tinyint(1) NOT NULL,
    `Guilde2` tinyint(1) NOT NULL,
    PRIMARY KEY (`IDGuilde1`,`IDGuilde2`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    Ce que j'aimerai faire c'est qu'il est impossible d'insérer un IDGuilde dans la table GuildeAmie, si celle si n'existe pas dans la table Guilde.

    J'ai utilisé pour cela le Foreign Key donc cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE `GuildeAmie` ADD FOREIGN KEY ( `IDGuilde1` ) REFERENCES `GuildeAmie` ( `IDGuilde1` )
    et voici la réponse (sur phpmyadmin)

    Votre requête SQL a été exécutée avec succès ( Traitement en 0.0495 sec. )
    Mais lorsque j'insère des données erronées dans GuildeAmie... il accepte, alors que je ne veux pas justement.

    Est-ce que je me suis trompé dans mon raisonnement ? Est-ce que j'ai pas tout mis ? Est-ce que ca n'existe pas dans MySQL ? .. je ne sais pas.

    Merci pour vos réponses.

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    MySQL ne gère les contraintes foreign key que sur les tables InnoDB.
    En MyIsam il accepte la déclaration mais n'en tient pas compte.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Oh... j'ai essayer de trouver l'erreur pendant 1heure.. et ce n'était que ca... et m___ ^^


    Ben merci, maintenant ca fonctionne bien

    Merci beaucoup !

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

Discussions similaires

  1. Déclarer une clé étrangère comme clé primaire
    Par awalter1 dans le forum Toad
    Réponses: 4
    Dernier message: 25/01/2013, 15h30
  2. [MCD] Décrire une clé étrangère comme clé primaire
    Par anne-claire dans le forum Schéma
    Réponses: 6
    Dernier message: 09/01/2012, 19h22
  3. [syntaxe] 2 clefs étrangères comme clef primaire
    Par novices dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 01/08/2006, 17h30
  4. utilisé une chaine comme un nom de variable sous delphi ?
    Par hatem_info dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/2005, 17h22
  5. [Utilier une table comme un tampon]
    Par Straahd dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 01/09/2005, 21h27

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