我有一个表,我在其中存储评论。每个评论都有自己的id和isReply
列,以防评论是对另一个评论的回复。我想知道我是否可以设置一个关系,以便在删除评论时自动删除对该评论的所有回复评论。我试图为引用isReply
的comments.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;