我正在尝试将此代码插入我的MySQL数据库的Albums表中
INSERT INTO `Albums` (`Albumid`, `Name`, `Numberoftracks`, `Artistid`, ]
`Genre`) VALUES (1, "Innuendo", 12, "Queen", "Rock");
但每次我尝试继续收到此错误。
1452 - Cannot add or update a child row: a foreign key constraint fails
(`b4014107_db1/Albums`, CONSTRAINT `Albums_ibfk_1` FOREIGN KEY (`Artistid`)
REFERENCES `Artist` (`Artistid`))
我知道这与表中的外键有关,但我需要手动输入外键,因为它不会自动递增。
这是表格代码。
CREATE TABLE `Albums` ( `Albumid` int(6) NOT NULL, `Name` varchar(50) NOT
NULL, `Numberoftracks` int(11) NOT NULL, `Artistid` int(6) NOT NULL,
`Genre` varchar(50) NOT NULL, PRIMARY KEY (`Albumid`), KEY `Artistid`
(`Artistid`), CONSTRAINT `Albums_ibfk_1` FOREIGN KEY (`Artistid`)
REFERENCES `Artist` (`Artistid`)) ENGINE=InnoDB DEFAULT CHARSET=latin1
我该如何解决这个问题?我需要在表格中输入数据。
答案 0 :(得分:1)
artistid
是表Albums
中的外键。当您尝试在父表中不存在的子表中插入外键时,会出现父子关系错误。您的artistid
表格中不存在Artist
。
此外,添加artistid
的数据类型也是不同的。
外键关系涉及一个包含该表的父表 中心数据值和具有相同值的子表 回到它的父母。 FOREIGN KEY子句在子节点中指定 表
它将拒绝任何尝试创建的INSERT或UPDATE操作 如果没有匹配项,则子表中的外键值 父表中的候选键值。
要删除错误,请先在Queens
表格中插入Artist
艺术家,然后将其插入Albums
表格。还要更正列artistid
的数据类型。
答案 1 :(得分:0)
使用外键并不意味着任何隐式自动增量。表中的外键表示记录必须已存在于另一个表中。 请参阅http://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html(更改网址中有关您需求的版本)
否则,如果您想要动态创建艺术家,请触发。
希望它能澄清。