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

SQL Firebird Discussion :

[Firebird] Création de clé étrangère - FOREIGN KEY


Sujet :

SQL Firebird

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Points : 26
    Points
    26
    Par défaut [Firebird] Création de clé étrangère - FOREIGN KEY
    Bonjour,

    J'ai une petite question sans importance, mais qui me turlupine (sur FB 1.5). Je souhaite créer deux tables contenent les continents et les pays (rattachés aux continent).
    J'ai donc créé ma table continent sans problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE CONTINENT (
    	CODE SMALLINT NOT NULL CONSTRAINT CT_PK_CONTINENT PRIMARY KEY, 
    	NOM D_NOM );
    Trop facile lol... En revanche, lorsque je souhaite crée ma table des pays j'ai un message d'erreur au niveau du mot FOREIGN avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE PAYS (	 
    	CODE SMALLINT NOT NULL,
    	CODE_CONTINENT SMALLINT NOT NULL CONSTRAINT CT_FK_CODECONTINENT FOREIGN KEY REFERENCES CONTINENT(CODE),
    	NOM D_NOM,
    	CONSTRAINT CT_PK_PAYS PRIMARY KEY (CODE,CODE_CONTINENT)	);
    alors qu'avec celui là, ça passe parfaitement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE PAYS (	 
    	CODE SMALLINT NOT NULL,
    	CODE_CONTINENT SMALLINT NOT NULL,
    	NOM D_NOM,
    	CONSTRAINT CT_PK_PAYS PRIMARY KEY (CODE,CODE_CONTINENT)	);
    ALTER TABLE PAYS ADD CONSTRAINT CT_FK_CODECONTINENT FOREIGN KEY (CODE_CONTINENT) REFERENCES CONTINENT(CODE);
    Ma question est donc la suivante (je ne trouve pas ma réponse dans la référence SQL de FB...):

    : Doit t'on sous FB impérativement crée les clés étrangères à l'extérieur de la déclaration de la table (comme le fait les métadata) ou à la suive de la déclaration des champs dans la déclaration même?
    En gros, pourquoi ne peut-on pas faire la déclaration des clés étrangères comme je l'ai fais pour la clé primaire de ma table Continent?

    Merci pour vos réponses.

    NB: ma question exclue la problématique de la Turquie

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Après une recherche rapide sur la partie SQL de ce site, j'ai trouvé cet article sur les clés étrangères (FK) qui semble indiquer que ta syntaxe est correcte mais si ça peut ta rassurer l'insertion donnée en exemple ne fonctionne pas chez moi, pas plus que la tienne

    Cela dit je n'ai pas lu le document et il est peut être spécifié dans quel(s) cas / SGBDR cette syntaxe ne fonctionne pas ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Bon, je ne trouve pas là non plus ma réponse... donc en théorie, ça marche.. en pratique, c'est une autre question.

    Ceci dit, ne nous traumatisons pas, y'a deux méthodes différentes qui fonctionnent, donc, c'est déjà bien

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Je pensais que ça pouvait être dû au SGBD (on est tous les 2 sous IB) donc j'ai testé sous ORACLE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE PAYS (    
       CODE SMALLINT NOT NULL, 
       CODE_CONTINENT SMALLINT FOREIGN KEY REFERENCES CONTINENT(CODE), 
       NOM VARCHAR(30), 
       CONSTRAINT CT_PK_PAYS PRIMARY KEY (CODE,CODE_CONTINENT)   );
    RESULTAT : pas mieux car j'ai alors le message d'erreur suivant :
    CODE_CONTINENT SMALLINT FOREIGN KEY REFERENCES CONTINENT(CODE),
    *
    ERREUR à la ligne 3 :
    ORA-00907: missing right parenthesis

Discussions similaires

  1. [1.x] embed forms mode création nouvel item : problem foreign key
    Par flora806 dans le forum Symfony
    Réponses: 10
    Dernier message: 20/06/2011, 11h59
  2. comment faire les clés étrangères "foreign key"
    Par geeksDeve dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/06/2011, 09h32
  3. Réponses: 3
    Dernier message: 04/10/2010, 11h32
  4. [Foreign Key] Un champ est-il une clé étrangère ?
    Par starch dans le forum Bases de données
    Réponses: 5
    Dernier message: 27/02/2004, 13h01
  5. Clé étrangère - Foreign Key
    Par ZIED dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/02/2004, 16h57

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