ALTER 토토 베이 — 데이터 정렬 정의 변경
조합 변경이름버전 새로고침 토토 베이 정렬 변경이름이름을 다음으로 변경:new_name조합 변경이름소유자:new_owner| 현재_역할 | CURRENT_USER | SESSION_USER이름스키마 설정new_schema
조합 변경콜레이션의 정의를 변경합니다.
사용하려면 토토 베이 정렬을 소유해야 합니다.조합 변경. 소유자를 변경하려면 다음을 수행할 수 있어야 합니다.역할 설정새로운 소유 역할로 변경해야 하며 해당 역할에는 다음이 있어야 합니다.생성데이터 정렬 스키마에 대한 권한. (이러한 제한 사항은 소유자를 변경해도 데이터 정렬을 삭제하고 다시 생성하여 수행할 수 없는 작업을 수행하지 않도록 강제합니다. 그러나 슈퍼유저는 어쨌든 모든 데이터 정렬의 소유권을 변경할 수 있습니다.)
이름기존 대조의 이름(선택적으로 스키마 한정).
new_name컬레이션의 새 이름입니다.
new_owner컬레이션의 새로운 소유자.
new_schema콜레이션을 위한 새로운 스키마.
버전 새로고침콜레이션 버전을 업데이트하세요. 보다참고아래.
데이터 정렬 개체가 생성되면 공급자별 데이터 정렬 버전이 시스템 카탈로그에 기록됩니다. 데이터 정렬을 사용하면 기록된 버전과 비교하여 현재 버전을 확인하고 불일치가 있으면 경고가 표시됩니다. 예를 들면 다음과 같습니다.
경고: 데이터 정렬 "xx-x-icu"에 버전이 일치하지 않습니다. DETAIL: 데이터베이스의 데이터 정렬은 버전 1.2.3.4를 사용하여 생성되었지만 운영 체제에서는 버전 2.3.4.5를 제공합니다. 힌트: 이 데이터 정렬의 영향을 받는 모든 개체를 다시 빌드하고 ALTER COLLATION pg_catalog."xx-x-icu" REFRESH VERSION을 실행하거나 올바른 라이브러리 버전으로 PostgreSQL을 빌드하세요.
데이터 정렬 정의가 변경되면 데이터베이스 시스템이 특정 정렬 순서를 가진 저장된 객체에 의존하기 때문에 색인 손상 및 기타 문제가 발생할 수 있습니다. 일반적으로 이는 피해야 하지만 운영 체제를 새로운 주요 버전으로 업그레이드하거나 다음을 사용하는 경우와 같은 합법적인 상황에서 발생할 수 있습니다.pg_upgrade최신 버전의 ICU와 연결된 서버 바이너리로 업그레이드합니다. 이런 일이 발생하면 데이터 정렬에 따른 모든 개체를 다시 작성해야 합니다. 예를 들어 다음을 사용합니다.REINDEX. 완료되면 다음 명령을 사용하여 대조 버전을 새로 고칠 수 있습니다.조합 변경 ...버전 새로 고침. 그러면 현재 데이터 정렬 버전을 기록하도록 시스템 카탈로그가 업데이트되고 경고가 사라집니다. 실제로 영향을 받은 모든 객체가 올바르게 재구축되었는지 여부는 확인하지 않습니다.
다음에서 제공하는 데이터 정렬을 사용할 때libc, 버전 정보는 GNU C 라이브러리(대부분의 Linux 시스템), FreeBSD 및 Windows를 사용하는 시스템에 기록됩니다. ICU에서 제공하는 데이터 정렬을 사용하는 경우 버전 정보는 ICU 라이브러리에서 제공되며 모든 플랫폼에서 사용할 수 있습니다.
조합을 위해 GNU C 라이브러리를 사용할 때 C 라이브러리 버전은 조합 버전의 프록시로 사용됩니다. 많은 Linux 배포판에서는 C 라이브러리를 업그레이드할 때만 데이터 정렬 정의를 변경하지만, 유지 관리 담당자가 최신 데이터 정렬 정의를 이전 C 라이브러리 릴리스로 자유롭게 백포트할 수 있으므로 이 접근 방식은 불완전합니다.
데이터 정렬을 위해 Windows를 사용하는 경우 버전 정보는 다음과 같은 BCP 47 언어 태그로 정의된 데이터 정렬에만 사용할 수 있습니다.en-US.
토토 베이베이스 기본 대조의 경우 유사한 명령이 있습니다.데이터베이스 변경 ... 대조 버전 새로고침.
다음 쿼리를 사용하면 현재 데이터베이스에서 새로 고쳐야 하는 모든 데이터 정렬과 이에 의존하는 개체를 식별할 수 있습니다.
SELECT pg_describe_object(refclassid, refobjid, refobjsubid) AS "조합",
pg_describe_object(classid, objid, objsubid) AS "객체"
pg_dependent d에서 JOIN pg_토토 베이 c
ON refclassid = 'pg_토토 베이'::regclass AND refobjid = c.oid
WHERE c.collversion < pg_토토 베이_actual_version(c.oid)
1, 2로 주문;
조합 이름을 바꾸려면de_DE에독일어:
ALTER COLLATION "de_DE" 이름을 독일어로 변경;
조합의 소유자를 변경하려면en_US에조:
컬렉션 "en_US" 소유자를 joe로 변경;
없습니다컬렉션 변경SQL 표준의 문입니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.