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 :

problème avec alter


Sujet :

SQL Firebird

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut problème avec alter
    bonjour
    décidement les messages d'erreurs ne me lachent pas!
    j'exécute le script suivant avec IBexpert et par la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    create table ORGANISMES(
        NUMERO_ORG VARCHAR(5) NOT NULL,                                                                             
        NOM_ORG    VARCHAR(20) NOT NULL,                                                                              
        ADRESSE_ORG VARCHAR(25) NOT NULL,                                                                              
        TELEPHONE_ORG VARCHAR(15) NOT NULL,                                                                           
        FAXE_ORG VARCHAR(15) NOT NULL,                                                                                
        MATIERES_PREMIERES VARCHAR(60) NOT NULL,                                                                  
        NOM_DIRIGEANT VARCHAR(30) NOT NULL,                                                                       
        SITUATION_GEOGRAPHIQUE VARCHAR(40) NOT NULL,                                                              
        primary key (NUMERO_ORG)
    );
    create table PARTICIPANT(
        NUMERO_PART VARCHAR(5) NOT NULL,                                                                          
        NOM   VARCHAR(35) NOT NULL,                                                                             
        ADRESSE VARCHAR(25) NOT NULL,                                                                            
        TELEPHONE VARCHAR(15) NOT NULL,                                                                         
        FONCTION  VARCHAR(30),                                                                         
        primary key (NUMERO_PART)
    );
     
    ALTER TABLE PARTICIPANT
    ADD FOREIGN KEY (NUMERO_ORG) REFERENCES  ORGANISMES;
    et j'ai le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    This operation is not defined for system tables.
    unsuccessful metadata update.
    Unknown columns in index RDB$FOREIGN696.
    j'ai besoin d'aide merci
    merci

  2. #2
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut Re: problème avec alter
    [quote="devalender"]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE PARTICIPANT
    ADD FOREIGN KEY (NUMERO_ORG) REFERENCES  ORGANISMES;
    Revoyez votre syntaxe...

    Pour créer une clé étrangère il faut donner le nom de la table où cette clé se trouvera, le nom de la colonne de cette même table qui recevra le contenue à vérifier , le nom de la table liée et enfin le nom de la colonne de la table liée (en général l'identifiant...)

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE PARTICIPANT ADD FOREIGN KEY (NOM_COLONNE_DE_LA_TABLE_PARTICIPANT) REFERENCES ORGANISMES(NUMERO_ORG);
    Je ne vois pas dans votre table PARTICIPANT une colonne VARCHAR(5) qui pourrait recevoir l'identifiant de la table ORGANISMES ???

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut
    voici donc ma rectification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE PARTICIPANT ADD FOREIGN KEY(NUMEROORG)
    REFERENCES  ORGANISMES (NUMERO_ORG);
    mais j'ai toujours le meme pb.
    et puis vous dites que vous ne voyez pas dans la table
    PARTICIPANT une colonne VARCHAR(5) qui pourrait recevoir
    l'identifiant de la table ORGANISMES excusez moi mais
    je ne vois pas trop bien ?
    es à dire que je devais reserver une colonne pour recevoir la clé FK
    merci

  4. #4
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Oui bien sur il faut que vous déclariez la colonne NUMEROORG dans votre table, le alter table ... add foreign key ne le fait pas...

    En fait la déclaration complete c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alter table NomTable add CONSTRAINT NomDeLaContrainte FOREIGN KEY (NomColonneDeNomTable) REFERENCES NomTableSource(ColonneNomTableSource);
    Là on voit mieux que l'on ajoute pas une colonne mais une contrainte.
    Le mot cle CONSTRAINT n'est pas obligatoire (sauf si l'on veux nommer la contrainte).

  5. #5
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut
    je vais encore essaiyer
    merci d'avance

  6. #6
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut
    voici donc la nouvelle correction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE SCOMITE
    ADD constraint NUMEROCOM FOREIGN KEY (NUMERO_COM)
    REFERENCES COMTECH(NUMERO_COM);
    mon pb subsiste hélas . je continu de chercher c'est vraiment dure!
    merci

  7. #7
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut
    bien je crois que là j'y suis arrivée !
    voici le corrigé
    la règle en Mérise est que:
    la clé primaire de la table père migre dans la table
    fils et là elle devient clé étrangère.

    Donc il fallait d'abord crée une colonne dans la table
    la table fils.
    Table Père
    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TABLE ORGANISMES (
        NUMERO_ORG              VARCHAR(5) NOT NULL,
        NOM_ORG                 VARCHAR(20) NOT NULL,
        ADRESSE_ORG             VARCHAR(25) NOT NULL,
        TELEPHONE_ORG           VARCHAR(15) NOT NULL,
        FAXE_ORG                VARCHAR(15) NOT NULL,
        MATIERES_PREMIERES      VARCHAR(60) NOT NULL,
        NOM_DIRIGEANT           VARCHAR(30) NOT NULL,
        SITUATION_GEOGRAPHIQUE  VARCHAR(40) NOT NULL,
        primary key (NUMERO_ORG)
    );
    modification de la table fils
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    code:
    CREATE TABLE PARTICIPANT (
        NUMERO_PART  VARCHAR(5) NOT NULL,
        NOM          VARCHAR(35) NOT NULL,
        ADRESSE      VARCHAR(25) NOT NULL,
        TELEPHONE    VARCHAR(15) NOT NULL,
        FONCTION     VARCHAR(30),
        /* la nouvelle colonne*/
        NUMEROTORG   VARCHAR(5) NOT NULL,
        primary key (NUMERO_ORG)
    );
    /* Création de la clé étrangère dans la table fils */  
     
    ALTER TABLE PARTICIPANT 
    ADD CONSTRAINT MON_FK FOREIGN KEY(NUMEROORG)
    REFERENCES ORGANISME(NUMERO_ORG);
    la syntaxe était donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE NomTableFils
    add CONSTRAINT NomDelaContrainte FOREIGN KEY(NomColonneNomTableFils)
    REFERENCES NomTableSource(ColonneNomTablePere);
    merci pour le coup de main

  8. #8
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Citation Envoyé par devalender
    Donc il fallait d'abord crée une colonne dans la table
    la table fils.
    Oui c'est c'est que j'ai dit il me semble
    Citation Envoyé par Barbibulle
    Oui bien sur il faut que vous déclariez la colonne NUMEROORG dans votre table, le alter table ... add foreign key ne le fait pas...

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

Discussions similaires

  1. [AC-2000] Problème avec ALTER TABLE
    Par Fr33dom dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/01/2011, 08h48
  2. Problème avec alter sequence en PL/SQL
    Par yadel31 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 21/06/2010, 18h04
  3. Problème avec ALTER TABLE [action] CONSTRAINT
    Par clemsouz dans le forum Débuter
    Réponses: 2
    Dernier message: 30/04/2009, 17h13
  4. Problème avec mon alter table
    Par gibea00 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/08/2007, 18h02
  5. Problème avec ALTER TABLE
    Par Philippe43 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/05/2007, 11h08

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