programing

Postgre에서 제약 조건 이름 업데이트SQL

kakaobank 2023. 5. 2. 22:54
반응형

Postgre에서 제약 조건 이름 업데이트SQL

Postgres에서 제약 조건 이름을 변경할 수 있습니까?다음이 추가된 PK가 있습니다.

ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey PRIMARY KEY(id);

그리고 저는 다른 이름을 가지고 시스템의 다른 부분들과 일치하고 싶습니다.기존 PK 제약 조건을 삭제하고 새 PK 제약 조건을 생성해야 합니까?아니면 관리할 수 있는 '소프트' 방법이 있습니까?

감사합니다!

Postgre에서 기존 구속조건의 이름을 변경하는 방법SQL 9.2 이상, ALTER 탭을 사용할 수 있습니다.LE:

ALTER TABLE name RENAME CONSTRAINT constraint_name TO new_constraint_name;

기본 키의 경우 다음을 수행할 수 있습니다.

ALTER INDEX commerce_contractor_pkey RENAME TO whatever_new_name

하지만 다른 유형의 제약 조건에서는 작동하지 않습니다.여기서 가장 좋은 옵션은 이전 옵션을 삭제하고 새 옵션을 만드는 것입니다.재구축 중에 시스템이 없으면 시스템이 활성화되지 않도록 트랜잭션 내에서 이 작업을 수행해야 합니다. (또한 트랜잭션에서 이 작업을 수행할 수 없는 경우 이전 항목을 삭제하기 전에 새 항목을 먼저 생성해야 합니다.)

기본 키가 주 테이블 이름보다 뒤떨어지는 경우가 많습니다.이 스크립트는 문제가 있는 항목을 식별하고 해결하는 데 도움이 되었습니다.

select 
    table_name, 
    constraint_name , 
    'ALTER TABLE ' || table_name || ' RENAME CONSTRAINT ' || constraint_name || ' TO ' || left(table_name, 58) || '_pkey;'
from information_schema.table_constraints tc
where constraint_type  = 'PRIMARY KEY' 
and constraint_name <> left(table_name, 58) || '_pkey';

기본 키 이름이 더 이상 "기본" 패턴이 아닌 모든 테이블을 찾습니다.<tablename>_pkey각 이름 바꾸기 스크립트를 만듭니다.

위 코드에서 위의 58자 제한은 제약 조건 이름의 최대 크기(63바이트)를 설명하는 것입니다.

감지 기능을 실행하기 전에 무엇이 반환되는지 확실히 확인합니다.그것이 다른 사람들에게 도움이 되기를 바랍니다.

언급URL : https://stackoverflow.com/questions/971786/constraint-name-update-in-postgresql

반응형