Ich habe eine "Kommentar" -Tabelle, die eine Konversation zu einem Thema wie folgt modelliert:
id serial
topic_id integer
parent_comment_id integer
body text
Jeder Kommentar hat also einen Verweis auf sein Thema UND schließlich seinen übergeordneten Kommentar (wenn es nicht der erste Kommentar zum Thema ist).
Ich möchte eine Einschränkung hinzufügen, die das Hinzufügen von Zeilen mit nicht übereinstimmendem Thema / übergeordnetem Element verhindert (z. B. durch Verweisen auf ein Thema, das nicht den erforderlichen Kommentar enthält, oder umgekehrt auf einen Kommentar, der auf das falsche Thema verweist).
Ist das möglich? Ist ein Auslöser erforderlich?
(Für die Aufzeichnung habe ich versucht
ALTER TABLE comments ADD FOREIGN KEY (parent_comment_id, topic_id)
REFERENCES comments (id, topic_id)
aber es beschwert sich, dass there is no unique constraint matching given keys for referenced table "comments"
)