2015-02-08 171 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

相關問題