Rechercher : dans
Par :

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

Dernière réponse le 31 mai 2008 à 10:29:24 khaoula.85, le 28 mai 2008 à 12:45:43 
 Signaler ce message aux modérateurs

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 :)

Meilleures réponses pour « [SQL] Deux référence dans une seule table » dans :
Référencer un/son site VoirComment référencer un site 1- Renseigner les balises méta 2- Référencer son site 3 - Les logiciels qui peuvent vous aider 4 - Autres liens sur ce sujet 1- Renseigner les balises méta Insérées dans chaque en-tête de page, les metatags...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Modification de table VoirModification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...
Les tableaux en langage C++ VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...

1

jee pee, le 28 mai 2008 à 12:56:53

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

Répondre à jee pee

2

khaoula.85, le 28 mai 2008 à 13:04:44

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 :)

Répondre à khaoula.85

3

khaoula.85, le 29 mai 2008 à 21:36:54

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.

Répondre à khaoula.85

4

jee pee, le 29 mai 2008 à 22:11:25

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)

Répondre à jee pee

5

khaoula.85, le 29 mai 2008 à 22:19:42

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)
);

Répondre à khaoula.85

6

jee pee, le 29 mai 2008 à 22:40:01

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)

Répondre à jee pee

7

 khaoula.85, le 31 mai 2008 à 10:29:24

Bonjour,
Merci encore une fois.
Bon week end :)

Répondre à khaoula.85
Collection CommentÇaMarche.net