2013-05-14 84 views
0

我有一个名为“PeopleCategory”表,它包括 PeopleCategoryID, DescriptionMySQL:我需要一个外键吗?

我有两条记录添加

1, Customers 
2, Partners 

然后我有一个表“人”,它包括PeopleID, PeopleCategoryID, Name

一些记录:

1, 1, George 
2, 1, John 
3, 2, Nick 

PeopleCategoryID告诉我们什么样的pe ople被定义。

我需要外键吗?我想这样的代码:

ALTER TABLE PeopleCategories 
ADD CONSTRAINT FK_test 
FOREIGN KEY (PeopleCategoryID) REFERENCES People(PeopleCategoryID) 
ON UPDATE CASCADE 
ON DELETE CASCADE; 

但它失败,错误150

任何想法?

回答

1

如果你要添加一个外键,它应该是在相反的方向:

ALTER TABLE People 
    ADD CONSTRAINT FK_test 
    FOREIGN KEY (PeopleCategoryID) REFERENCES PeopleCategory(PeopleCategoryID) 
    ON UPDATE CASCADE 
    ON DELETE CASCADE; 

这样一来,人们依赖于一个类别,以People没有相应的可以不加东西Category

您可能会遇到该错误,因为该列不是People表中的主键。

+0

的确如此。相反的方向添加工程。谢谢! – user1493428 2013-05-14 18:29:32