这是我的表,我有一个问题与最后一个(铭文)它不接受“CodeProjet”作为外键和错误说表(Projet)没有一个名为“CodeProjet”的主键,但它!!!!,我使用了我知道的每一招,什么都没有,我改变了表格来添加约束......等等,我总是得到同样的错误!!。这里是表格:
创建数据库Gestion_Stages_Employe
创建表Employe ( NumEmploye int主键, NomEmploye varchar(15), PrenomEmploye varchar(15), SexeEmploye varchar(10), DNaissEmploye日期, FonctionEmploye varchar(20) )
创建表TypeProjet ( TypeProjet varchar(20)主键, libelleProjet varchar(20), DureeProjet日期, )
创建表Projet ( CodeProjet int, TypeProjet varchar(20), DateDebut日期, DateFin日期, 约束Pk_CodeProj主键(CodeProjet,TypeProjet), 约束FK_TypeProj外键(TypeProjet)引用TypeProjet(TypeProjet), )
创建表格铭文 ( NumEmploye int外键引用Employe(NumEmploye), CodeProjet int外键引用Projet(CodeProjet), dateiscription日期, 主键(NumEmploye,CodeProjet), )
答案 0 :(得分:0)
正如评论中所提到的,Projet表上的主键是一个“复合键”(需要多个列才能强制实现唯一性)。
因此,要使您的外键工作,您需要从Project的主键中删除“TypeProjet”(假设CodeProjet足以唯一地标识Projet),或者您需要将TypeProjet添加到Inscription表中并使用两列定义外键,例如:
create table Inscription (
NumEmploye int foreign key references Employe(NumEmploye),
CodeProjet int,
dateiscription Date,
TypeProjet varchar(20),
Constraint fk_Inscription_project Foreign key (CodeProjet,TypeProjet) references Projet(CodeProjet,TypeProjet),
primary key (NumEmploye,CodeProjet),
)