Berikut adalah tabel sederhana tempat catatan dapat merujuk catatan induk di tabel yang sama:
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)
);
Dengan persyaratan tambahan bahwa salah satu nilai bidang lainnya ( num
) harus identik antara catatan induk dan anak, saya pikir kunci asing gabungan harus melakukan trik. Saya mengubah baris terakhir menjadi
FOREIGN KEY (parent_id, num) REFERENCES foo(id, num)
dan mendapat ERROR: tidak ada batasan unik yang diberikan kunci untuk tabel referensi "foo" .
Saya dapat dengan mudah menambahkan batasan ini, tetapi saya tidak mengerti mengapa itu perlu, ketika salah satu kolom yang direferensikan ( id
) sudah dijamin unik? Cara saya melihatnya, kendala baru akan menjadi berlebihan.
NULL != NULL
. Pokoknya .. :)