[SQL] Deux référence dans une seule table

Résolu/Fermé
Utilisateur anonyme - 28 mai 2008 à 12:45
 Utilisateur anonyme - 31 mai 2008 à 10:29
Bonjour,

Je souhaite créer une table qui comporte deux références sur deux autres tables.
Ce que j'ai écrit est le suivant :

prompt creation table reparation_piece
create table reparation_piece
(
num_reparation varchar2(10),
ref_piece varchar2(10),
quantite number(10,3),
constraint pk_reparation_piece primary key (num_reparation, ref_piece),
constraint fk_reparation_piece foreign key (num_reparation, ref_piece)
references piece (ref_piece)
references reparation (num_reparation)
);


Et ce que SQL*Plus Worksheet m'affice est cela :

creation table reparation_piece
references reparation (num_reparation)
*
ERREUR à la ligne 9 :
ORA-02256: le nombre de colonnes de référence doit correspondre au nombre de
colonnes référencées


Quelqu'un pourrait me corriger cette erreur ?

Merci de vos réponses :)
A voir également:

5 réponses

jee pee Messages postés 39611 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 230
28 mai 2008 à 12:56
Bonjour, Toujours dans le SQL Khaoula ?

il faut creer 2 FK puisqu'elles font reference à 2 tables differentes

create table reparation_piece
(
num_reparation varchar2(10),
ref_piece varchar2(10),
quantite number(10,3),
constraint pk_reparation_piece primary key (num_reparation, ref_piece),
constraint fk_num_reparation foreign key (num_reparation)
references reparation (num_reparation),
constraint fk_ref_piece foreign key (ref_piece)
references piece (ref_piece)
);

cdt
0
Utilisateur anonyme
28 mai 2008 à 13:04
Bonjour Mon Professeur ;)

Beh non, j'ai avancé quand même, j'ai appris le PL/SQL, lalala :)

Je révise pour mon examen, et j'ai eu cette petite contrainte disons..

Merci de ta réponse et passe une agréable après-midi :)
0
Utilisateur anonyme
29 mai 2008 à 21:36
Bonsoir,

Encore un petit problème quand il s'agit des références sur une clé étrangère, pourtant, j'ai ré-écris mes deux lignes comme tu as indiqué :

prompt creation table preparation
create table preparation
(
ref_preparation varchar2(10),
code_produit_composant varchar2(10),
code_produit_compose varchar2(10),
quantite number(10,3),
constraint pk_preparation primary key (ref_preparation),
constraint fk_preparation foreign key (code_produit_composant)
references produit (code_produit_composant),
constraint fk_preparation foreign key (code_produit_compose)
references produit (code_produit_compose)
);


P.S. Ce n'est pas la même table ;)

Merci encore une fois et bonne soirée.
0
jee pee Messages postés 39611 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 230
29 mai 2008 à 22:11
salut,

ya quelque chose qui cloche, soit les 2 champs sont dans la même table alors c'est :

constraint fk_produit foreign key (code_produit_composant,code_produit_compose)
references produit (code_produit_composant,code_produit_compose)

soit les champs ne sont pas la même table alors :

constraint fk_produit foreign key (code_produit_composant)
references produit (code_produit_composant),

constraint fk_AUTRETABLE foreign key (code_produit_compose)
references AUTRETABLE (code_produit_compose)
0
Utilisateur anonyme
29 mai 2008 à 22:19
Merci de ta réponse jee pee.

Au fait c'est un autre exercice à part. J'ai deux deux tables en tout : produit et preparation. J'ai pas eu de surprises lrs de la création de la table produit :

prompt creation table preparation
create table produit
(
code_produit varchar2(10),
designation varchar2(40),
prix_unitaire number(18,8),
un varchar2(2)
constraint pk_produit primary key (code_produit)
);


j'ai deux références de clés étrangères vers la table produit, d'où :

prompt creation table preparation
create table preparation
(
ref_preparation varchar2(10),
code_produit_composant varchar2(10),
code_produit_compose varchar2(10),
quantite number(10,3),
constraint pk_preparation primary key (ref_preparation),
constraint fk_preparation foreign key (code_produit_composant)
references produit (code_produit_composant),
constraint fk_preparation foreign key (code_produit_compose)
references produit (code_produit_compose)
);
0
jee pee Messages postés 39611 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 230
29 mai 2008 à 22:40
alors c'est ta ligne references qui ne va pas, car si code_produit_composant et code_produit_compose sont tous les 2 des code_produit de la table produit,

la syntaxe c'est references TABLE1 (NOM_DU_CHAMP_TABLE1)

donc

constraint fk_preparation_composant foreign key (code_produit_composant)
references produit (code_produit),
constraint fk_preparation_compose foreign key (code_produit_compose)
references produit (code_produit)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
31 mai 2008 à 10:29
Bonjour,
Merci encore une fois.
Bon week end :)
0