MySql外键错误1452和数据库结构

时间:2018-07-20 15:26:30

标签: mysql foreign-keys

我绝不是数据库工作方面的专家,因此,请原谅任何看起来显而易见的事情。

我有3个与外键相关的表。 票证,客户联系人和客户详细信息(请参见屏幕截图)

机票表: 票证表的联系人ID字段上有一个外键,它指向客户“联系人”表中的联系人ID字段。在customerID字段上还有一个外键,返回到CustomerContacts表中的customerID字段。

客户联系人表 客户联系人表的外键设置为“客户ID”字段,该字段返回到“客户详细信息”表中的客户ID。

当我运行此命令时:

INSERT INTO asinvdb.tickets (contactID, priorityID, categoryID,  subject,customerID) 
VALUES (74, 4, 4, 'Any random subject', (select customerID from     asinvdb.customerContacts where contactID = '74'));

我收到此错误:

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`asinvdb`.`tickets`, CONSTRAINT `customerIDtick` FOREIGN KEY (`customerID`) REFERENCES `customerContacts` (`contactID`) ON DELETE NO ACTION ON UPDATE NO ACTION)

我已确保已填充联系人74的客户联系人记录中的customerID字段(客户ID为124)。我确认在customerDetails表中有一个客户ID 124。

我正在尝试提取此联系人已经存在的值并将其放在票证表中。我想在其中输入该值,因为我要搜索的是客户而不是联系人的票证表。 我一直在寻找解决方案,每当我认为得到它时,都会遇到相同的错误。

任何帮助或方向指示将不胜感激,如果需要更多详细信息,请告诉我。

谢谢

表信息:

customerDetail

(PK)CustomerID INT(11)
CustomerName VARCHAR (45)
street1 VARCHAR (45)
street2 VARCHAR (45)
city VARCHAR (45)
state VARCHAR (45)
zip VARCHAR (45)
mainPhone VARCHAR (45)
mainFax VARCHAR (45)
companyWeb VARCHAR (45)

customercontacts

(PK)contactID Int (11)
FirstName VARCHAR (45)
lastName VARCHAR (45)
JobTitle VARCHAR (45)
email VARCHAR (45)
extension Int (6)
(FK) customerID 

tickets

(PK) idTicket Int(11)
(FK) contactID Int(11)
(FK) priorityID Int(11)
(FK) categoryID Int(11)
(FK) statusID Int(11)
subject VARCHAR(45)
(FK) customerID Int(11)

1 个答案:

答案 0 :(得分:0)

tickets表中的外键不正确。该错误消息表示您具有:

FOREIGN KEY (customerID) REFERENCES customerContacts (contactID)

应该是:

FOREIGN KEY (cusomerID) REFERENCES customerDetail (customerID)