我无法在 MySQL 上向我的 table 中插入值
I cannot insert values into my table on MySQL
我正在尝试将这些值插入 MySQL 数据库MySQL 中的一个 table 的 Artist_Name 列中
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Taylor Swift');
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Elton John');
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Kanye West');
INSERT INTO tbl_Artist (Artist_Name) VALUES ('Fallout Boy');
但是每当我尝试时,我总是收到这个错误!
#1452 - Cannot add or update a child row: a foreign key constraint fails
(`b4014107_db2/tbl_Artist`, CONSTRAINT `tbl_Artist_ibfk_1` FOREIGN KEY
(`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`)
我假设这与我分配给 table 本身的 Artist_id 列的外键有关。我只是不确定问题是什么以及如何纠正。
如果有帮助,我可以为您提供 table 的完整代码。
CREATE TABLE `tbl_Artist` ( `Artist_id` int(11) NOT NULL auto_increment,
`Artist_Name` varchar(32) NOT NULL, PRIMARY KEY (`Artist_id`), CONSTRAINT
`tbl_Artist_ibfk_1` FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist`
(`Artist_id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
如有任何帮助,我们将不胜感激。
这是你的table定义:
CREATE TABLE `tbl_Artist` (
`Artist_id` int(11) NOT NULL auto_increment,
`Artist_Name` varchar(32) NOT NULL,
PRIMARY KEY (`Artist_id`),
CONSTRAINT `tbl_Artist_ibfk_1` FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
这其实有点好笑。您在主键上有一个外键引用,返回到 table 本身的主键。因此,您永远无法插入行,因为您需要引用一行。
在任何情况下,主键都不应该是返回自身的外键。所以,只需删除约束:
CREATE TABLE `tbl_Artist` (
`Artist_id` int(11) NOT NULL auto_increment,
`Artist_Name` varchar(32) NOT NULL,
PRIMARY KEY (`Artist_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
您的问题是外键使您只能插入一个 ID 已存在于 table 上的行。因此,解决方案是放弃此约束并仅保留主键。
外键用于在 table 之间创建完整性检查。例如,专辑 table 的外键指向艺术家 table.
我正在尝试将这些值插入 MySQL 数据库MySQL 中的一个 table 的 Artist_Name 列中
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Taylor Swift');
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Elton John');
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Kanye West');
INSERT INTO tbl_Artist (Artist_Name) VALUES ('Fallout Boy');
但是每当我尝试时,我总是收到这个错误!
#1452 - Cannot add or update a child row: a foreign key constraint fails
(`b4014107_db2/tbl_Artist`, CONSTRAINT `tbl_Artist_ibfk_1` FOREIGN KEY
(`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`)
我假设这与我分配给 table 本身的 Artist_id 列的外键有关。我只是不确定问题是什么以及如何纠正。
如果有帮助,我可以为您提供 table 的完整代码。
CREATE TABLE `tbl_Artist` ( `Artist_id` int(11) NOT NULL auto_increment,
`Artist_Name` varchar(32) NOT NULL, PRIMARY KEY (`Artist_id`), CONSTRAINT
`tbl_Artist_ibfk_1` FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist`
(`Artist_id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
如有任何帮助,我们将不胜感激。
这是你的table定义:
CREATE TABLE `tbl_Artist` (
`Artist_id` int(11) NOT NULL auto_increment,
`Artist_Name` varchar(32) NOT NULL,
PRIMARY KEY (`Artist_id`),
CONSTRAINT `tbl_Artist_ibfk_1` FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
这其实有点好笑。您在主键上有一个外键引用,返回到 table 本身的主键。因此,您永远无法插入行,因为您需要引用一行。
在任何情况下,主键都不应该是返回自身的外键。所以,只需删除约束:
CREATE TABLE `tbl_Artist` (
`Artist_id` int(11) NOT NULL auto_increment,
`Artist_Name` varchar(32) NOT NULL,
PRIMARY KEY (`Artist_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
您的问题是外键使您只能插入一个 ID 已存在于 table 上的行。因此,解决方案是放弃此约束并仅保留主键。 外键用于在 table 之间创建完整性检查。例如,专辑 table 的外键指向艺术家 table.