Kayıtların aynı tablodaki üst kayıtlara başvurabileceği basit bir tablo:
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)
);
Ek alan değerlerinden birinin ( num
) ebeveyn ve alt kayıtlar arasında aynı olması şartıyla, bileşik bir yabancı anahtarın hile yapması gerektiğini düşündüm. Son satırı olarak değiştirdim
FOREIGN KEY (parent_id, num) REFERENCES foo(id, num)
ve HATA var : başvurulan tablo "foo" için verilen anahtarlarla eşleşen benzersiz bir kısıtlama yoktur .
Bu kısıtlamayı kolayca ekleyebilirim, ancak başvurulan sütunlardan ( id
) zaten benzersiz olduğu garanti edildiğinde neden gerekli olduğunu anlamıyorum ? Gördüğüm gibi, yeni kısıt gereksiz olurdu.
NULL != NULL
. Her neyse .. :)