如何使主键成为另一个表中的外键?

时间:2015-02-08 17:43:22

标签: sql-server-2008

这是我的表,我有一个问题与最后一个(铭文)它不接受“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), )

1 个答案:

答案 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),
)