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 :

Création d'une table avec foreign key.


Sujet :

MySQL

  1. #1
    Paulinho
    Invité(e)
    Par défaut Création d'une table avec foreign key.
    Bonjour!

    J'ai une table disques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE table disques
    (codDisque     integer     not null unique,
     titre              varchar(40)     not null,
     nomeCh        varchar(25)     not null,
     dateL            varchar(7)       not null, 
     editeur          varchar(15)     not null, 
     nCds             integer            not null,
     prix               real                not null, 
     primary key(codDisque));
    et une autre table clients:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE table clients
    (codClients     integer     not null unique,
     nomCl           varchar(25)      not null,
     adresseCl      varchar(35),
     telephoneCl    varchar(9),  
     emailCl           varchar(35),
     primary key(codClient));
    J'ai une table qui fait la liaison entre Disques et Clients, la table Achetent qui j'ai défini comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE table achetent
    (titre     varchar(40)     not null,
     codClient     integer     not null,
     dateAchat    varchar(10)     not null,
     primary key(titre, codClient),
     foreign key(titulo) references disques,
     foreign key(codClient) references clients);
    Mais quand je fait ça il m'est dit que on ne peut pas créer la table menagerie\achetent.frm (errno:150).

    Je ne comprend pas où c'est l'erreur...

    Merci d'avance!

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: [Débutant] Création d'une table avec foreign key.
    C'est plutôt ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE table achetent
    (codDisque     integer     not null,
     codClient     integer     not null,
     dateAchat    varchar(10)     not null,
     CONSTRAINT pk_achetent PRIMARY KEY (codDisque, codClient),
     CONSTRAINT fk_codDisque FOREIGN KEY (codDisque) REFERENCES disques(codDisque),
     CONSTRAINT fk_codClient FOREIGN KEY (codClient) REFERENCES clients(codClient));
    En plus j'ai nommé tes contraintes PRIMARY/FOREIGN KEY.

    Sinon, est-ce que ta bas est en InnoDB? Parce que si elle est en MyISAM (par défaut), les contraintes de clef étrangères ne sont pas gérées.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Paulinho
    Invité(e)
    Par défaut
    Je travaille dans MySQL 5. Est-ce qu'elle a InnoDB?

    Merci pour ton aide!

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SHOW VARIABLES LIKE "have_innodb"
    Et pour connaitre les types de tes tables:

    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    Paulinho
    Invité(e)
    Par défaut
    Merci encore!

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Comment as-tu résolu ton problème? Tu vas utiliser une table InnoDB? Tu vas utiliser une table Isam et gérer les problèmes de clef à la main? Tu cherchais juste à décrire les contraintes de clefs étrangères de manière syntaxique?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  7. #7
    Paulinho
    Invité(e)
    Par défaut
    MySQL 5 a des InnoDB. Il me fallait faire la table achetent pour faire la liaison entre les deux tables. Mon prof ne m'avait pas parlez de constraints. Mais je use seulement constraint dans cette table, parce que dans une autre table qui fait la liaison entre Clients et Envies, il ne fonctionne pas(je ne sais pas pourquoi...) Je débute dans SQL (il y a 3 mois) et c'est le premier project que je fait, pourtant je ne sais pas grande chose de SGDB, tu vois? C'est un petit project d'un magasin des disque avec les tables: Chanteurs, Disques, Musiques, Exemplaires, Achetent, Clients, Ont et Envies.

    Bonsoir!

Discussions similaires

  1. Problème de création d'une table avec le nom KEY
    Par uaibys dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 22/09/2013, 18h04
  2. Réponses: 6
    Dernier message: 14/05/2009, 11h01
  3. Newbie PgSQL->Probleme Creation de table avec FOREIGN KEY
    Par ralkif dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 07/03/2006, 21h59
  4. [mysql]table avec foreign key
    Par samjung dans le forum Langage SQL
    Réponses: 24
    Dernier message: 24/11/2005, 14h42
  5. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20

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