gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:45:02 26 4
gpt4 key购买 nike

我有一个帖子和评论结构,我通过添加外键对其进行了更改:

帖子:

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 show me: Cannot delete or update a parent row: a foreign key constraint fails.

我的问题是,这个帖子/评论结构是否正确?我应该使用外键吗?帖子有评论怎么删除?

最佳答案

在我看来,您需要设置 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 ;

关于mysql - 使用 FOREIGN KEY 删除帖子中的评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29876108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com