Đây là một bảng đơn giản nơi các bản ghi có thể tham chiếu các bản ghi cha trong cùng một bảng:
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)
);
Với yêu cầu bổ sung rằng một trong các giá trị trường khác ( num
) phải giống hệt nhau giữa các bản ghi cha và con, tôi nghĩ rằng một khóa ngoại tổng hợp sẽ thực hiện thủ thuật. Tôi đã thay đổi dòng cuối cùng thành
FOREIGN KEY (parent_id, num) REFERENCES foo(id, num)
và có LRI: không có ràng buộc ràng buộc duy nhất nào cho các khóa đã cho cho bảng tham chiếu "foo" .
Tôi có thể dễ dàng thêm ràng buộc này, nhưng tôi không hiểu tại sao cần thiết, khi một trong các cột được tham chiếu ( id
) đã được đảm bảo là duy nhất? Theo cách tôi thấy, các ràng buộc mới sẽ là dư thừa.
NULL != NULL
. Dù sao .. :)