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
'programing' 카테고리의 다른 글
| PowerShell의 가상 환경? (0) | 2023.05.02 |
|---|---|
| Swift를 사용하여 아무 곳이나 터치하여 iOS 키보드 닫기 (0) | 2023.05.02 |
| 상수 배열 선언 (0) | 2023.05.02 |
| Azure 기능 로컬 호스트에 대한 CORS 구성 (0) | 2023.05.02 |
| Xcode가 시작되지 않습니다. 'Xcode 확인 중...'에 계속 표시됩니다. (0) | 2023.05.02 |