2014-11-29 1 views
0

어디서 외래 키 제약 조건을 가질 수 있습니까? 부모가없는 -"where"가있는 외래 키 제약

CREATE TABLE child_version_2_parent_data (
    child_id SERIAL PRIMARY KEY, 
    ...some other meta data... 
) 

CREATE TABLE child (
    child_id SERIAL PRIMARY KEY REFERENCES parent WHERE version = 2, 
    version int 
) 

나는 약 100 백만 행 (기본적으로 기존 행 버전 1)가있는 테이블이있다. 그리고 다음 버전에서는 모든 새 행에 부모 행이 있습니다.

+0

를 추가 child_id 열이 null이 될 수 있지만, references parent로하고, "정확성"을 시행하는 것입니다 = 2'는'NOT NULL'' child_id'를 가지고 있습니다. 단지'CHECK' 제약 조건을 사용할 수 있습니다. – zerkms

+0

명확히해서 죄송합니다. 하위 테이블의 child_id가 기본 키입니다. 모든 행에이 테이블에 자식 ID가 있습니다. – samol

+0

버전 2 하위 행에 외래 키 제약 조건을 적용하여 다른 테이블을 참조하려고합니다. – samol

답변

0

기술적으로 올바른 표현 방법은 다른 버전의 테이블을 사용하는 것입니다.

1

나는이 표현하는 방법과는`버전과 모든 행을 확인하려면 추가 check constraint (version < 2 OR child_id is not NULL)