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 :

Relation et contrainte entre deux tables


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Points : 23
    Points
    23
    Par défaut Relation et contrainte entre deux tables
    Salut à tous,

    tout d'abord j'ai essayé de créer deux tables MySql client et commande, le problème que j'ai rencontré est comment faire une relation entre les deux tables. Voilà la syntaxe de mes deux tables sous forme de requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    create table client(numero varchar(10) primary key,nom varchar(50))
    create table commande(num_commande varchar(15) primary key,numero varchar(10) references client(numero))
    Mais dans l'insertion des données j'insère un numéro qui n'existe pas dans la table client et il sera inséré !!!! aidez moi SVP!!

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    il faut que tes deux tables soient en InnoDB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE client ENGINE = InnoDB ;
    ALTER TABLE commande ENGINE = InnoDB ;
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    InnoDB est l'un des moteurs de stockage de MySQL, le moteur par défaut étant MyISAM. Il serait donc plus juste de dire que c'est MySQL qui utilise InnoDB.

    Dans tous les cas, MySQL accepte les ordres de création de contraintes d'intégrité référentielle ; cependant, la contrainte ne sera vraiment appliqué que si le moteur de stockage la supporte, ce qui n'est pas le cas de MyISAM. Il faut donc passer les tables en InnoDB.

    Eric, ta syntaxe n'est pas bonne, tu mets la clé primaire et la clé étrangère sur la même colonne... Attention également au S de REFERENCES.

    La syntaxe correcte et complète de création des tables est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE client(
      num_client varchar(10) PRIMARY KEY, 
      nom varchar(50)
    ) ENGINE = InnoDB ;
     
    CREATE TABLE commande(
      num_commande varchar(15) PRIMARY KEY,
      num_client varchar(10)),
      FOREIGN KEY (num_client) REFERENCES client(num_client)
    ) ENGINE = InnoDB ;
    La ligne FOREIGN KEY se lit : on place une clé étrangère sur num_client, qui doit être un client(num_client), càd un num_client de la table client.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Points : 23
    Points
    23
    Par défaut salut a tous
    mercii bqp a tous il marche bien aujourd'huit merci!!!!

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

Discussions similaires

  1. [AC-2010] Deux relations 1 à plusieurs entre deux tables
    Par titi_la_vermine dans le forum Modélisation
    Réponses: 3
    Dernier message: 01/08/2013, 17h37
  2. Relation plusieurs à plusieurs entre deux tables
    Par regisyves dans le forum Schéma
    Réponses: 5
    Dernier message: 20/09/2012, 14h20
  3. [Doctrine] Relation entre deux tables dans schema.yml sans contrainte
    Par ninorotto dans le forum ORM
    Réponses: 8
    Dernier message: 24/08/2011, 10h26
  4. Comment créer une contrainte entre deux tables ?
    Par Invité dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/04/2009, 16h53
  5. Relation entre deux tables
    Par manel007 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/03/2005, 16h54

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