Hier ist eine einfache Tabelle, in der Datensätze auf übergeordnete Datensätze in derselben Tabelle verweisen können:
CREATE TABLE foo (
id SERIAL PRIMARY KEY,
parent_id INT NULL,
num INT NOT NULL,
txt TEXT NULL,
FOREIGN KEY (parent_id) REFERENCES foo(id)
);
Mit der zusätzlichen Anforderung, dass einer der anderen Feldwerte ( num
) zwischen übergeordneten und untergeordneten Datensätzen identisch sein muss, dachte ich, dass ein zusammengesetzter Fremdschlüssel den Trick machen sollte. Ich habe die letzte Zeile in geändert
FOREIGN KEY (parent_id, num) REFERENCES foo(id, num)
und ERROR erhalten: Es gibt keine eindeutige Einschränkung, die den angegebenen Schlüsseln für die referenzierte Tabelle "foo" entspricht .
Ich kann diese Einschränkung leicht hinzufügen, verstehe aber nicht, warum dies erforderlich ist, wenn eine der referenzierten Spalten ( id
) bereits eindeutig ist. So wie ich es sehe, wäre die neue Einschränkung überflüssig.
NULL != NULL
. Wie auch immer .. :)