如何解决无法添加或更新子行,外键失败
DROP DATABASE IF EXISTS `dbstudents`;
CREATE DATABASE IF NOT EXISTS `dbstudents`;
USE `dbstudents`;
DROP TABLE IF EXISTS `student_detail`;
CREATE TABLE `student_detail` (
`id` int(11) NOT NULL AUTO_INCREMENT,`fav_programming_language` varchar(128) DEFAULT NULL,`city` varchar(45) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,`first_name` varchar(45) DEFAULT NULL,`last_name` varchar(45) DEFAULT NULL,`email` varchar(45) DEFAULT NULL,`student_detail_id` int(11) DEFAULT NULL,`password` varchar(50) NOT NULL,`enabled` tinyint(1) NOT NULL,PRIMARY KEY (`id`),KEY `FK_DETAIL_idx` (`student_detail_id`),CONSTRAINT `FK_DETAIL` FOREIGN KEY (`student_detail_id`) REFERENCES `student_detail` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `authorities`;
CREATE TABLE `authorities` (
`id` int(11) NOT NULL AUTO_INCREMENT,`authority` varchar(50) NOT NULL,UNIQUE KEY `authorities_idx_1` (`id`,`authority`),CONSTRAINT `authorities_ibfk_1` FOREIGN KEY (`id`) REFERENCES `student` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这是插入语句:
INSERT INTO `student`
VALUES
(1,'Stefan','Stefanovic','stefan@gmail.com',1,'stefan123',1),(2,'Marko','Markovic','marko@gmail.com','marko123',(3,'Jovan','Jovanovic','jovan@gmail.com','jovan123',1);
这是错误:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`dbstudents`.`student`,CONSTRAINT `FK_DETAIL` FOREIGN KEY (`student_detail_id`) REFERENCES `student_detail` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
我找到了一些解决方案,但所有解决方案都与我的有所不同。如何解决这个问题?当我尝试填写除自治权外的每个表时发生错误
解决方法
由于系统中没有任何 student_details,请使用 NULL 代替数字并稍后添加该数字
INSERT INTO `student`
VALUES
(1,'Stefan','Stefanovic','stefan@gmail.com',NULL,'stefan123',1),(2,'Marko','Markovic','marko@gmail.com','marko123',(3,'Jovan','Jovanovic','jovan@gmail.com','jovan123',1);
参见示例 https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=c1bbdd8ee9b9a9af244da774cdb41175
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。