由于外键约束,无法删除行

时间:2016-05-07 07:19:10

标签: mysql

我有两张桌子。 usercomment。我希望用户能够对评论进行投票,因此我创建了另一个名为user_vote_comment的表。我让id表上的user列和id表上的comment列成为user_vote_comment表上的复合主键。

enter image description here

这是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>

我该怎么办?

2 个答案:

答案 0 :(得分:1)

我认为您的SQL没有任何问题。可能是你错过了在上述问题中提到的其他问题导致了这个问题吗?

我使用SQLFiddle(http://www.sqlfiddle.com/#!9/c726aa/1/0)进行了快速测试,并且我能够从USER_VOTE_COMMENT表中删除就好了。

答案 1 :(得分:-1)

您可以设置ON DELETE CASCADE而不是ON DELETE NO ACTION