如何解决当在复合主键中引用外键列时,MySQL级联更新失败
与其他类似问题不同,更新父级行时出现错误#1452。为什么会发生?预先谢谢你。
以下是相关表格:
CREATE TABLE IF NOT EXISTS `user`
(
`username` VARCHAR(100) NOT NULL,`password` VARCHAR(200) NOT NULL,`name` VARCHAR(100),`surname` VARCHAR(100),`icon` BLOB,PRIMARY KEY (username)
);
CREATE TABLE IF NOT EXISTS `document`
(
`owner` VARCHAR(100) NOT NULL,`name` VARCHAR(100) NOT NULL,`sharing_link` VARCHAR(200) UNIQUE NOT NULL,PRIMARY KEY (`owner`,`name`),FOREIGN KEY (`owner`) REFERENCES user(`username`) ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS sharing
(
`sharing_user` VARCHAR(100) NOT NULL,`document_owner` VARCHAR(100) NOT NULL,`document_name` VARCHAR(100) NOT NULL,PRIMARY KEY (`sharing_user`,`document_owner`,`document_name`),FOREIGN KEY (`sharing_user`) REFERENCES user(`username`) ON UPDATE CASCADE,FOREIGN KEY (`document_owner`,`document_name`) REFERENCES `document`(`owner`,`name`) ON UPDATE CASCADE
);
这里是如何重现错误:
INSERT INTO `user` (`username`,`password`,`name`,`surname`,`icon`) VALUES ('fruggeri','fruggeri','Franco','Ruggeri',NULL);
INSERT INTO `document` (`owner`,`sharing_link`) VALUES ('fruggeri','document','sharing_link');
INSERT INTO `sharing` (`sharing_user`,`document_name`) VALUES ('fruggeri','document');
UPDATE `user` SET `username` = 'new_fruggeri' WHERE `user`.`username` = 'fruggeri'
产生的错误:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`collaborative_text_editor`.`sharing`,CONSTRAINT `sharing_ibfk_1` FOREIGN KEY (`sharing_user`) REFERENCES `user` (`username`) ON UPDATE CASCADE)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。