Eu tenho uma tabela de "comentários" que modela uma conversa sobre um tópico, assim:
id serial
topic_id integer
parent_comment_id integer
body text
Portanto, todo comentário tem uma referência ao seu tópico E, eventualmente, seu comentário pai (se não for o primeiro comentário no tópico).
Gostaria de adicionar uma restrição que impediria a adição de linhas com tópico/pai incompatíveis (por exemplo, referenciando um tópico que não possui o comentário obrigatório ou, inversamente, um comentário que referencia o tópico errado).
Isso é possível? É necessário um gatilho?
(Para constar, eu tentei
ALTER TABLE comments ADD FOREIGN KEY (parent_comment_id, topic_id)
REFERENCES comments (id, topic_id)
mas reclama que there is no unique constraint matching given keys for referenced table "comments"
)