Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用外键删除帖子中的评论_Mysql_Sql - Fatal编程技术网

Mysql 用外键删除帖子中的评论

Mysql 用外键删除帖子中的评论,mysql,sql,Mysql,Sql,我有一个post和comment结构,我通过添加外键对其进行了更改: 职位: 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 A

我有一个post和comment结构,我通过添加外键对其进行了更改:

职位:

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告诉我:无法删除或更新父行:外键约束失败


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

在我看来,你需要设置
cascade
选项。当删除行时,
cascade
选项将删除与FK相关的任何内容。这意味着当一篇文章被删除时,与该文章相关的所有评论也将被删除

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`)
     ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;