我有一个“评论”表,它模拟了一个主题的对话,如下所示:
id serial
topic_id integer
parent_comment_id integer
body text
因此,每条评论都引用了它的主题,最终还有它的父评论(如果它不是关于该主题的第一条评论)。
我想添加一个约束,以防止添加主题/父项不匹配的行(例如,通过引用没有所需评论的主题,或者相反地引用错误主题的评论)。
这可能吗?是否需要触发器?
(为了记录,我试过
ALTER TABLE comments ADD FOREIGN KEY (parent_comment_id, topic_id)
REFERENCES comments (id, topic_id)
但它抱怨there is no unique constraint matching given keys for referenced table "comments"
)