programing

PostgreSQL: 기본 제약 조건 이름

muds 2023. 5. 6. 16:44
반응형

PostgreSQL: 기본 제약 조건 이름

Postgre에서 테이블을 작성할 때SQL. 제공되지 않은 경우 기본 제약 조건 이름이 할당됩니다.

CREATE TABLE example (
    a integer,
    b integer,
    UNIQUE (a, b)
);

하지만 사용하기ALTER TABLE제약 조건을 추가하려면 이름이 필수인 것 같습니다.

ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b);

이로 인해 내가 작업한 프로젝트에서 이름 지정이 일치하지 않으며 다음과 같은 질문이 표시됩니다.

  1. 테이블 작성 중에 추가된 경우 받은 이름으로 기존 테이블에 제약 조건을 추가하는 간단한 방법이 있습니까?

  2. 그렇지 않은 경우 불일치를 방지하기 위해 기본 이름을 모두 사용하지 않아야 합니까?

Postgre의 인덱스에 대한 표준 이름SQL은 다음과 같습니다.

{tablename}_{columnname(s)}_{suffix}

여기서 접미사는 다음 중 하나입니다.

  • pkey기본 키 제약 조건의 경우
  • key고유 제약 조건의 경우
  • excl제외 제약 조건의 경우
  • idx다른 종류의 지수에 대하여.
  • fkey외국 열쇠로.
  • check체크 제약 조건의 경우

시퀀스의 표준 접미사는 다음과 같습니다.

  • seq모든 순서에 대하여

고유 제약 조건의 증거:

주의: CREATE TABLE/UNIKE는 테이블 "example"에 대한 암시적 인덱스 "example_a_b_key"를 생성합니다.

설명서는 이에 대해 매우 명확합니다("테이블 제약 조건: 이 양식은 CREATE TABLE과 동일한 구문을 사용하여 테이블에 새 제약 조건을 추가합니다.")

따라서 다음을 간단히 실행할 수 있습니다.

ALTER TABLE 예제 고유 추가(a, b);

언급URL : https://stackoverflow.com/questions/4107915/postgresql-default-constraint-names

반응형