Création d'une clé étrangère : Msg 1776.
Salut tout le monde,
Ca fait une petite heure que je cherche et je trouve plein de solutions, mais pas la bonne apparemment.
Je cherche à créer 3 tables avec des clés étrangère via le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| USE TEST
GO
CREATE TABLE TEST_PRODUIT(
CODFOUR varchar(6) NOT NULL,
CODPDT varchar(6) NOT NULL,
CODGEN varchar(13) NOT NULL,
Designation varchar(30) NOT NULL,
DateMAJ datetime NOT NULL
CONSTRAINT PK_TEST_PRODUIT PRIMARY KEY (CODFOUR, CODPDT, CODGEN)
)
GO
USE TEST
GO
CREATE TABLE TEST_TYPE_TARIFS(
TypeTarif varchar(3) NOT NULL,
Designation varchar(30) NOT NULL
CONSTRAINT PK_TEST_TYPE_TARIFS PRIMARY KEY (TypeTarif)
)
GO
USE TEST
GO
CREATE TABLE TEST_TARIFS(
CODPDT varchar(6) NOT NULL,
CODGEN varchar(13) NOT NULL,
TypeTarif varchar(3) NOT NULL,
Prix decimal(7,2) NOT NULL,
DateMAJ datetime NOT NULL
CONSTRAINT PK_TEST_TARIFS PRIMARY KEY (CODPDT, CODGEN, TypeTarif)
)
GO
USE TEST
GO
ALTER TABLE TEST_TARIFS ADD CONSTRAINT FK_TEST_TARIFS_TEST_TYPE_TARIFS FOREIGN KEY(TypeTarif) REFERENCES TEST_TYPE_TARIFS (TypeTarif)
GO
USE TEST
GO
ALTER TABLE TEST_TARIFS ADD CONSTRAINT FK_TEST_TARIFS_TEST_PRODUIT FOREIGN KEY(CODPDT, CODGEN) REFERENCES TEST_PRODUIT (CODPDT, CODGEN) |
Mais j'obtiens toujours le même message d'erreur sur la création de la dernière clé étrangère :
Citation:
Msg 1776, Niveau 16, État 0, Ligne 1
Aucune clé primaire ou candidate dans la table référencée 'TEST_PRODUIT' ne correspond à la liste des colonnes de référence de la clé étrangère 'FK_TEST_TARIFS_TEST_PRODUIT'.
Msg 1750, Niveau 16, État 0, Ligne 1
Impossible de créer la contrainte. Voir les erreurs précédentes.
En cherchant des infos sur ce message d'erreur j'ai lu que mes colonnes référencées comme clés étrangères n'était pas des clés primaires dans les autres tables, pourtant si (ou bien j'ai loupé quelque chose ?).
Les champs des clés étrangères sont respectivement du même type, les tables et les clés sont déclarées dans un ordre logique.
Bref je sèche.
Quelqu'un a une autre idée ? Je suis sous SQL Server 2005.