내가 찾고있는 것은 기존 테이블에 제약 조건 (예 : 고유)을 추가하고 기존 데이터에 대해 유효성을 검사 한 다음 제약 조건을 제거 할 때 관찰했던 것과 같은 동작입니다. 제약 조건을 테이블에 유지하고 싶지는 않습니다. 단지 표현하고, 기존 데이터에 대해 유효성을 검사 한 다음 계속 진행합니다 (또는 실패한 경우 예외를 발생시킵니다). PostgreSQL (9.2)는 이러한 종류의 작업을 직접 수행 할 수 있습니까?PostgreSQL에서 엔터티에 추가하지 않고 제약 조건을 표현하고 확인할 수 있습니까?
alter table t
drop constraint the_pk;
당신도 몇 시간 동안을 유지하지 않으려면 다음 트랜잭션 내에서 그것을 할 : 오류가 드롭하지가 있었다면
alter table t
add constraint the_pk primary key (user_id);
NOTICE: ALTER TABLE/ADD PRIMARY KEY will create implicit index "the_pk" for table "t"
ERROR: could not create unique index "the_pk"
DETAIL: Key (user_id)=(1) is duplicated.
:
당신은 "조건"을 위반하는 행을 카운팅'select' 문을 사용할 수 있습니다. 예 : 'group by '과'counting (*)> 1'을 포함하는 고유 한 제약 조건 –
@a_horse_with_no_name에 대한 제안에 감사드립니다. 제약 조건을 위반하는 경우 (예 : CASE ... 구문 상 유효하지 않은 최상위 브랜칭) 예외를 throw하는 등 어떻게해야합니까? 절차 언어를 사용해야합니까? – BlueBomber