我有一个表,我在其中存储评论。每个评论都有自己的id和isReply列,以防评论是对另一个评论的回复。我想知道我是否可以设置一个关系,以便在删除评论时自动删除对该评论的所有回复评论。我试图为引用isReplycomments.id列设置外键,但出现以下错误:
#1452-无法添加或更新子行:外键约束失败(_db#sql-1030_31f,constraint#sql-1030_31f_ibfk_1
删除级联上的外键(isReply)引用
更新时无操作)

最佳答案

您的comments表可能仍然有引用测试期间已删除的注释的isReply值的答案。听听mysql想说什么:

a foreign key constraint fails

您所要做的就是清空表,定义外键(您的错误应该消失),然后您将拥有所需的行为。一旦fk被创建,就不需要触发器,这就是级联存在的原因。
请注意,您可能希望使用以下方法将isReply的默认值设置为null
ALTER TABLE comments CHANGE isReply isReply integer DEFAULT NULL;

07-25 21:37