Ось проста таблиця, де записи можуть посилатися на батьківські записи в тій самій таблиці:
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)
);
З додатковою вимогою, що одне з інших значень поля ( num
) має бути однаковим між записом батьків та дітей, я подумав, що складений зовнішній ключ повинен зробити трюк. Я змінив останній рядок на
FOREIGN KEY (parent_id, num) REFERENCES foo(id, num)
і отримано ПОМИЛКА: не існує єдиного відповідного обмеження для заданих ключів для посилається таблиці "foo" .
Я можу легко додати це обмеження, але я не розумію, для чого це потрібно, коли один із посилаються стовпців ( id
) вже гарантовано є унікальним? Як я це бачу, нове обмеження було б зайвим.
NULL != NULL
. У всякому разі .. :)