이건 예전부터 문제가 되어 오던 문제입니다.
PostgreSQL 에서 unique 라고 하는 key word 는 UNIQUE index 를 만든 후 그기서 중복되는 키가 들어가지 않도록 감시를 합니다.
그러므로 꼭 unique 옵션이 필요한 경우는 inherits 를 시킨 다음 따로 unique index 를 명시적으로 만들어 주면 동일한 효과가 나타납니다. 아마도 언젠가는 고쳐지리라 생각됩니다. :/)
> 안녕하세요.
>
> 말 그대로 참고 거리입니다. 아마도 알고 계시리라 생각합니다만...
> 테이블을 만들때 공통되거나 계승(?)이 필요할때 사용하는 INHERITS
> 가 있습니다.
> 쓸때는 좋았습니다.
> 그런데 문제가 있더군요.
>
> 원본 테이블 내의 unique는 계승하지 않습니다.
> 즉,
> Code char not null unique
> 라고 되어있는 경우
> Code char not null
> 로 딸려가는 거죠.
> 그리고 또 한가지는
> 계승한 원본의 컬럼은 나중에라도 unique를 걸어줄 수가 없습니다.
> 예를 들어 a 라는 테이블에 a_a라는 것이 있다고 치고
> create table b (
> unique(a_a);
> ) INHERITS( a );
> 위와 같은 방법도 통하지 않습니다.
>
> 결국은
> unique 로 잡을 것은 해당 테이블에 존재해야 합니다.
>
> 인천의 나사 풀린 산호...
|