MySQL:我需要外键吗?

时间:2013-05-14 18:00:28

标签: mysql database-design

我有一个名为“PeopleCategory”的表,它包括 PeopleCategoryID, Description

我添加了两条记录

1, Customers
2, Partners

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

一些记录:

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

PeopleCategoryID告诉我们定义了哪种人。

我需要外键吗?我试过这段代码:

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

但它因错误150而失败。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果要添加外键,则应该反方向:

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

这样,人们依赖于某个类别,如果没有相应的People,您就无法向Category添加内容。

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