PostgreSQL에서 테이블을 생성 할 때 기본 제약 조건 이름이 제공되지 않으면 할당됩니다.
CREATE TABLE example (
a integer,
b integer,
UNIQUE (a, b)
);
그러나 ALTER TABLE
제약 조건을 추가하려면 이름이 필수 인 것 같습니다.
ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b);
이로 인해 내가 작업 한 프로젝트에서 이름 지정 불일치가 발생하고 다음과 같은 질문이 표시됩니다.
-
테이블 생성 중에 추가하면받은 이름으로 기존 테이블에 제약 조건을 추가하는 간단한 방법이 있습니까?
-
그렇지 않은 경우 불일치를 방지하기 위해 기본 이름을 모두 피해야합니까?
답변
설명서 ( “이것에 대해 매우 분명하다 tableconstraint : 테이블을 만들 때이 양식은 동일한 구문을 사용하여 테이블에 새로운 제약 조건을 추가합니다. “)
따라서 다음을 간단히 실행할 수 있습니다.
ALTER TABLE 예제 ADD UNIQUE (a, b);
답변
PostgreSQL에서 인덱스의 표준 이름은 다음과 같습니다.
{tablename}_{columnname(s)}_{suffix}
여기서 접미사는 다음 중 하나입니다.
pkey
기본 키 제약 조건key
고유 제약 조건excl
제외 제약의 경우idx
다른 종류의 인덱스fkey
외래 키check
검사 제약
시퀀스의 표준 접미사는 다음과 같습니다.
seq
모든 시퀀스
UNIQUE 제약 증명 :
주의 : CREATE TABLE / UNIQUE는 “example”테이블에 대한 암시 적 인덱스 “example_a_b_key”를 생성합니다.