2015-02-08 106 views
0

这是我的表,我有一个问题,最后一个(铭文)它不接受“CodeProjet”作为外键和错误说表(Projet)没有主键称为“CodeProjet”,但它!!!!,我用过的每一个技巧,我知道什么也没有,我改变表添加约束...等仍然没有我总是得到相同的错误!!这里是表格:如何使主键成为另一个表中的外键?

创建数据库Gestion_Stages_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,典型值eProjet), 约束FK_TypeProj外键(TypeProjet)引用TypeProjet(TypeProjet), )

创建表碑文 ( NumEmploye INT外键引用雇工(NumEmploye), CodeProjet INT外键引用谟(CodeProjet) dateiscription日期,

+0

据我所见,'Projet'的主键是分段的('CodeProjet,TypeProjet')。 – 2015-02-08 17:46:39

+0

(铭文)有两个pripary键,问题在于不需要将“CodeProjet”作为(Projet)表的主键!!我做了一些与其他数据库的测试并且工作正常,但是在这里我没有理解为什么:/ – Elizabeth 2015-02-08 17:51:53

回答

0

正如在评论中提及 主键(NumEmploye,CodeProjet) ),在PROJET表的主键是“复合键”(多列都需要强制唯一性)。

因此,对于您的外键工作,您需要从项目主键中删除“TypeProjet”(假设CodeProjet足以唯一标识Projet),或者您需要将TypeProjet添加到铭文例如:

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), 
) 
+0

这个练习需要一个复合键,但是我认为这是一个错误,因为当我在上面写上我的代码时它不起作用(我只是在谈论这个),我认为一个关键应该是足够的,当我看到你的建议,我去了:)我修改了我的winforms sometings这为work.your代码工作正常,但我不想添加新的属性到我的table.now我可以继续我的工作感谢你@lheria – Elizabeth 2015-02-08 23:32:42

相关问题