Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2004, 13h21   #1
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
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 :
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 :
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
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2004, 13h37   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Par défaut Re: problème avec alter

[quote="devalender"]
Code :
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 :
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 ???
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2004, 15h08   #3
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
voici donc ma rectification
Code :
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
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2004, 16h43   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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 :
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).
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2004, 19h58   #5
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
je vais encore essaiyer
merci d'avance
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2004, 20h52   #6
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
voici donc la nouvelle correction
Code :
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
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2004, 20h37   #7
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
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 :
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 :
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 :
1
2
3
4
 
ALTER TABLE NomTableFils
ADD CONSTRAINT NomDelaContrainte FOREIGN KEY(NomColonneNomTableFils)
REFERENCES NomTableSource(ColonneNomTablePere);
merci pour le coup de main
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2004, 22h31   #8
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h01.


 
 
 
 
Partenaires

Hébergement Web