다음은 레코드가 동일한 테이블에서 상위 레코드를 참조 할 수있는 간단한 테이블입니다.
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
. 어쨌든 .. :)