簡體   English   中英

MySQL:無法添加外鍵約束錯誤

[英]MySQL: Cannot add foreign key constraint Error

第一個表是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; 

問題在於, Quarter組合鍵的成員( CouresNQuarterDayTime構成LocationTime表的主鍵)。 不能在僅與Quarter相關聯的另一個表上聲明外鍵約束,它還應包括組合鍵的其他部分。 解決您的問題的一種可能方法是將其他列聲明為您的主鍵。 此外,我不明白為什么不使用具有自動生成的INT(IDENTITY)作為主鍵的列或具有自動生成的GUID的列的原因。

如果您試圖將INSERT a value插入表table_1 ,而INSERT a value在表table_2中不存在,那么您將收到錯誤消息。

由於在table_1字段上具有外鍵,因此必須在table_2具有same value

參見無效的演示 此演示顯示,Fabricantes表中不存在Codigo的值,因此會引發錯誤消息。 這是一個工作演示 ,它顯示該值首先在表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM