我有一个帖子和评论结构,我更改它添加一个外键:
帖子:
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告诉我:无法删除或更新父行:外键约束失败。
我的问题是,这个帖子/评论结构是否正确?我应该使用外键吗?如果它有评论,如何删除这篇文章?
答案 0 :(得分:0)
嗯,在我看来,你需要设置openlog()
选项。删除行时,cascade
选项会删除与FK相关的任何内容。这意味着,当帖子被删除时,该帖子的所有评论相关也将被删除。
cascade
让我知道这是否有效。
干杯!