我有两张桌子。 user
和comment
。我希望用户能够对评论进行投票,因此我创建了另一个名为user_vote_comment
的表。我让id
表上的user
列和id
表上的comment
列成为user_vote_comment
表上的复合主键。
这是user_vote_comment
表格的结构:
CREATE TABLE IF NOT EXISTS `user_vote_comment` (
`user_id` INT(11) UNSIGNED NOT NULL,
`comment_id` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`user_id`, `comment_id`),
INDEX `fk_user_vote_comment_comment1_idx` (`comment_id` ASC),
CONSTRAINT `fk_user_vote_comment_user1`
FOREIGN KEY (`user_id`)
REFERENCES `user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_user_vote_comment_comment1`
FOREIGN KEY (`comment_id`)
REFERENCES `comment` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
现在我向user_vote_comment
添加了一些行,但后来我想删除一些投票,因为我希望用户拥有该选项,以便进行投票。但后来我收到此错误消息:
Error 1451: Cannot delete or update a parent row: a foreign key constraint fails (`user_vote_comment`, CONSTRAINT `fk_user_vote_comment_comment1` FOREIGN KEY (`comment_id`) REFERENCES `comment` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
我认为用户和评论表是父表吗?因为如果我要删除用户或注释它是一个约束是有意义的,那么我应该得到一个错误,因为user_vote_comment
中的某些行依赖于该信息,但不是相反?
我不明白为什么我无法删除user_vote_comment
中的行,我觉得如果我甚至无法从中移除行,我就会受到太多限制。< / p>
我该怎么办?
答案 0 :(得分:1)
我认为您的SQL没有任何问题。可能是你错过了在上述问题中提到的其他问题导致了这个问题吗?
我使用SQLFiddle(http://www.sqlfiddle.com/#!9/c726aa/1/0)进行了快速测试,并且我能够从USER_VOTE_COMMENT表中删除就好了。
答案 1 :(得分:-1)
您可以设置ON DELETE CASCADE
而不是ON DELETE NO ACTION