Không có cách nào để xác định điều này bằng cách sử dụng ràng buộc KIỂM TRA, vì vậy tôi nghĩ cách tiếp cận tốt nhất là một trình kích hoạt:
http://www.postgresql.org/docs/9.1/static /sql-createtrigger.html
http://www.postgresql.org/docs /9.1/static/plpgsql-trigger.html
Bạn sẽ kết thúc với một cái gì đó như (Tôi chưa thử nghiệm nó hoặc bất cứ điều gì):
CREATE TRIGGER at_least_one before INSERT, UPDATE, DELETE ON the_one_table FOR EACH ROW EXECUTE PROCEDURE check_at_least_one();
CREATE OR REPLACE FUNCTION check_at_least_one() RETURNS trigger AS $$
BEGIN
nmany := select count(*) from the_many_table where the_many_table.the_one_id=NEW.id;
IF nmany > 0 THEN
RETURN NEW;
END IF;
RETURN NULL;
END;