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

Langage SQL Discussion :

[mysql]table avec foreign key


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut [mysql]table avec foreign key
    Bonsoir tout le monde!
    je désire créer une table intermédiaire pour éviter les relations n:n
    Donc j'ai crée un script *.sql avec la commande ci dessous:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create table user_operation
    (numero_user int not null,
     numero_operation int not null,
     foreign key (numero_user) references user(numero_user),
     foreign key (numero_operation) references operation(numero_operation)
    );
    mais celle ci ne fonctionne pas
    Ou est le probleme ?
    Merci d'avance!

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut Re: [mysql]table avec foreign key
    Salut,
    Citation Envoyé par samjung
    Ou est le probleme ?
    Ca, c'est à toi de nous le dire, et après on poura t'aider à trouver une solution

    Seule hypothèse : as-tu essayé en nommant tes contraintes ?
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    [Mode compilateur ON]
    autre hypothese : vérifie que la création des tables user et operation c'est bien passée.
    [Mode compilateur OFF]

    Citation Envoyé par Xo
    et après on poura t'aider à trouver une solution
    +1
    Si tu post aussi le msg d'erreur ça aide à t'aider.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Bonjour tout le monde,
    désolé de répondre que maintenant j'ai essayé de me dépatouiller de mon côté sans succès

    Je ne peux en plus pas utiliser de déboggueur vu que je suis sous unix
    Donc voila le message d'erreur:

    ERROR 1064 at line 92: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'user(numero_user),
    D'après le compilateur ce ne serait qu'une erreur de syntaxe mais je ne vois rien
    (j'ai verifié et mes tables user et operation sont créées bien comme il faut)

    Merci de votre aide!

    [/quote]

  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    re,

    c chaud ton truc
    Le nom de la colonne ( numero_user )que tu utilises dans la FK est bien le nom de la PK de l'autre table (user)? Tu n'as pas fait de 'fote' ?
    Tu peux poster aussi la création des 2 autres tables ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Merci de ton aide! voilà la création des 2 autres tables:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    create table user
    (numero_user int unsigned not null auto_increment primary key,
     nom_user char(50) not null,
     email char(50) not null
    );

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    create table operation
    (numero_operation int unsigned not null auto_increment primary key,
     description char(50) not null,
     fichier_cible char(50) not null
    );
    Rien ne semble anormal

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    up tjs pas trouvé la solution c'est peut-être (sûrement) dû à une syntaxe incorecte par rapport à mon Mysql (j'ai la version 4.0.9)

  8. #8
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    re,

    Tes PK et FK ne sont pas du même type.
    numero_user et numero_operation sont unsigned dans les tables user et operation et int ds user_operation.

    A +

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    re,
    j'ai changé et tout passé en int unsigned et ca ne change rien
    Je vois franchement pas où ca cloche :/

    Merci de ton aide en tout cas

  10. #10
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Tes 3 tables sont-elles de type InnoDB ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    non elles doivent forcement l'être ?

  12. #12
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    C'est ce qui est marqué dans la doc chapitre FOREIGN KEY
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  13. #13
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    ca ne fonctionne pas non plus avec le type innodb :/
    Mais ce qui me tue c'est que mon code fonctionne chez un ami sans probleme :o

  14. #14
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Avec la même version de mySQL ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  15. #15
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    non et c'est ça le problème ...
    Il utilise une version de mysql plus ancienne !

    Je pense pourtant respecter parfaitement la syntaxe de la version pour 4.0.x pour les foreign key.
    Je mettrais en copier colle les bouts de code mis à jour avec le type=innodb et les index tout à l'heure !

    Merci de ton aide sincement en tout cas!

  16. #16
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    As-tu essayé avec un alter table plutôt que dans les CREATE ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  17. #17
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    il me met une faute de syntaxe des que je met un ALTER a la place de create

    Mes 3 bouts de codes ressemblent à ca maintenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     alter table user
    (numero_user int unsigned not null auto_increment primary key,
     nom_user char(50) not null,
     email char(50) not null)
     TYPE=INNODB
    ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     alter table operation
    (numero_operation int unsigned not null auto_increment primary key,
     description char(50) not null,
     fichier_cible char(50) not null)
     TYPE=INNODB
    ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    alter table user_operation
    (numero_user int(50) unsigned not null,
     numero_operation int(50) unsigned  not null,
     INDEX (numero_user),foreign key (numero_user) references user(numero_user),
     INDEX (numero_operation),foreign key (numero_operation) references operation(numero_operation)
     ON DELETE CASCADE
    )
     TYPE=INNODB
    ;
    et maintenant il s'arrete des la création de la 1ere table en me disant qu'il y a une faute de syntaxe ://

  18. #18
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Regarde la syntaxe du alter table dans la doc !

    Tu crées tes tables (avec CREATE TABLE et en mode InnoDB) mais sans les foreign key, seulement les primary key)

    Ensuite tu appliques le ALTER TABLE pour ajouter les froreign key.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  19. #19
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    haaa okiii merci de ton aide je vais aller voir comment fonctionne les alter table

  20. #20
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    raaaaah j'ai tout testé et ca ne marche tjs pas
    Quelqu'un a une idée ?
    Merci Médiat en tout cas pour ton aide

    [mode Depression]
    Adieu monde cruel
    [/mode Depression]

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. creation de tables avec foreign key
    Par fasyr dans le forum Débuter
    Réponses: 9
    Dernier message: 25/04/2009, 18h50
  2. Drop table avec foreign key
    Par samus535 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/10/2008, 14h59
  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. Création d'une table avec foreign key.
    Par Paulinho dans le forum Débuter
    Réponses: 6
    Dernier message: 01/12/2005, 18h47
  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