第一个表是LocationTime表,第二个表是Student表。 我正在使用' ALTER'添加外键。但我得到了以下错误。为什么我收到错误?
无法添加外键约束错误
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| CourseN | varchar(3) | NO | PRI | NULL | |
| Quarter | varchar(11) | NO | PRI | NULL | |
| DayTime | varchar(7) | NO | PRI | NULL | |
| RoomN | varchar(3) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| studentName | varchar(15) | NO | PRI | NULL | |
| CourseN | varchar(3) | NO | PRI | NULL | |
| Quarter | varchar(11) | NO | PRI | NULL | |
+-------------+-------------+------+-----+---------+-------+
ALTER TABLE Student
ADD FOREIGN KEY (Quarter) REFERENCES LocationTime (Quarter)
ON UPDATE CASCADE ON DELETE SET NULL;
答案 0 :(得分:0)
问题在于Quarter
是复合键的成员(CouresN
,Quarter
和DayTime
构成主键对于LocationTime
表)。无法在另一个仅与Quarter
关联的表上声明外键约束,它还应包括复合键的其他部分。解决问题的一种可能方法是将其他列声明为主键。此外,我没有看到您不使用具有自动生成的INT(IDENTITY)的列作为主键或具有自动生成的GUID的列的原因。
答案 1 :(得分:0)
如果您尝试INSERT a value
进入表table_1
中不存在的表table_2
,那么您将收到错误。
由于您在table_1
字段上有外键,因此same value
中必须有table_2
。
查看non-working demo。此演示显示Fabricantes表中不存在Codigo的值,因此它会抛出错误消息。这是一个working demo,表示该值首先出现在表格中。