2011-03-13 3 views
0

Postgres 데이터베이스에서 열거 형에 새 값을 추가하려고하지만 유형이 여러 필드에서 이미 사용 중입니다. 형식이 이미 사용 중일 때 Postgres에서이 작업을 수행 할 수 없습니다. Postgres에 열거 형 추가하기

  • 은 삭제 모든 필드와 유형을 사용하여 기능,
  • 를 삭제, 임시 VARCHAR 필드 유형 을 사용하여 모든 필드를 복사

    1. :

      은 이전에 내가 이것을 달성했습니다 형식,

    2. 추가 형식으로 새 형식을 만들려면 열거 된 값,
    3. 모두 설정 열거 형을 사용하는 임시 필드 및 함수.

    테이블, 뷰 및 기능의 DB 전체에서 수십 번 사용되는 경우 큰 작업입니다. 분명히 열거 형에 새로운 값을 추가하는 것보다 쉬운 방법이있을 것입니다.

    도움을 주셔서 감사합니다.

  • +0

    듣고 싶은 대답이 아닐 수도 있습니다. 그러나 이것은 정규화되지 않은 디자인에 대해 지불하는 가격입니다. enum 값을 별도의 테이블로 이동하고 이에 대한 외래 키를 작성하십시오. 새 값을 추가하는 것은 테이블에 새 행을 추가하는 것만 큼 간단합니다. –

    답변

    1

    @a_horse_with_no_name이 문제를 해결하는 최적의 방법을 포함했다. 완전한 아키텍처가 당신의 마음에 들지 않는다면 PostgreSQL의 DDL 및 DML 작업 트랜잭션 지원을 이용할 수 있습니다.

    따라서 이론적으로 단일 트랜잭션 작업에서 5 단계를 모두 수행 할 수 있습니다. MVCC 덕분에이 변경 작업을 안전하게 수행 할 수 있으며 데이터베이스 사용자에게 최소한의 기능적 영향을 미칠 수 있습니다. 테이블의 크기에 따라 거대한 디스크 오버 헤드가 발생하고 상당한 데이터베이스가 부 풀리게됩니다 (트랜잭션이 많은 시간이 걸리는 경우 진공 프로세스가 실행되지 않습니다).

    이 모든 것이 완벽하게 수행 할 수 있습니다.