使用FOREIGN KEY删除帖子中的评论

时间:2015-04-26 09:51:03

标签: mysql sql

我有一个帖子和评论结构,我更改它添加一个外键:

帖子:

CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `user` varchar(40) NOT NULL,
  `text` varchar(500) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;

帖子的评论:

CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `postid` int(11) UNSIGNED NOT NULL,
  `user` varchar(40) NOT NULL,
  `texto` varchar(3000) NOT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`postid`) REFERENCES posts (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;

所以,如果用户想要删除他的帖子:

delete FROM posts WHERE id=? and user=?

和他的帖子有评论mysql告诉我:无法删除或更新父行:外键约束失败。

我的问题是,这个帖子/评论结构是否正确?我应该使用外键吗?如果它有评论,如何删除这篇文章?

1 个答案:

答案 0 :(得分:0)

嗯,在我看来,你需要设置openlog()选项。删除行时,cascade选项会删除与FK相关的任何内容。这意味着,当帖子被删除时,该帖子的所有评论相关也将被删除。

cascade

让我知道这是否有效。

干杯!