多个密钥的MySQL外键约束失败

时间:2016-03-29 15:19:44

标签: mysql foreign-keys

您好我正在创建几个表,其中一些表有多个键链接到同一个表。当我尝试创建外键链接时,我会给出:

errno: 150 "Foreign key constraint is incorrectly formed"

以下是我正在创建的表格:

create table EventFeed (
 EventFeedID integer auto_increment not null,
 EventName varchar(100),
 EventTime Timestamp,
 EventLocation varchar(100),
 primary key (EventFeedID)
);

create table Calendar (
 MyEventID integer auto_increment not null,
 EventFeedID integer,
 EventName varchar(100),
 EventTime Timestamp,
 EventLocation varchar(100),
 AttendeeID varchar(100),
 primary key (MyEventID),
 foreign key (EventFeedID) references EventFeed (EventFeedID),
 foreign key (EventName) references EventFeed (EventName),
 foreign key (EventTime) references EventFeed (EventTime),
 foreign key (EventLocation) references EventFeed (EventLocation),
 foreign key (AttendeeID) references Users (UserID)
);

错误似乎来自'Calendar'表中的外键,但是我的其他一些表使用了类似的外键并且没有错误

任何人都可以建议我做错了吗?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

除了具有唯一约束的列之外,您不能在非主键的列上拥有外键。因此,如果您希望外键引用它,则必须使EventName,EventTime等具有唯一性。

您可以在以下网址查看:Technet Microsoft

  

FOREIGN KEY约束不必仅链接到另一个表中的PRIMARY KEY约束;它也可以定义为引用另一个表中UNIQUE约束的列。

你可以看到这个小提琴的工作示例:http://sqlfiddle.com/#!9/05663