ALTER EXTENSION — 확장 정의 변경하기
ALTER EXTENSION — 확장 정의 변경하기
ALTER EXTENSION은 이미 설치된 확장(extension)의 정의를 바꾸는 명령이에요. 확장을 새 버전으로 업데이트하거나, 스키마를 옮기거나, 확장의 멤버 객체를 추가·제거할 때 씁니다. 확장의 구성 요소를 관리하는 일은 주로 확장의 업데이트 스크립트 안에서 이뤄져요.
출처: PostgreSQL 문서
본문
시놉시스 (Synopsis)
ALTER EXTENSION name UPDATE [ TO new_version ]
ALTER EXTENSION name SET SCHEMA new_schema
ALTER EXTENSION name ADD member_object
ALTER EXTENSION name DROP member_object
where member_object is:
ACCESS METHOD object_name |
AGGREGATE aggregate_name ( aggregate_signature ) |
CAST (source_type AS target_type) |
COLLATION object_name |
CONVERSION object_name |
DOMAIN object_name |
EVENT TRIGGER object_name |
FOREIGN DATA WRAPPER object_name |
FOREIGN TABLE object_name |
FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
MATERIALIZED VIEW object_name |
OPERATOR operator_name (left_type, right_type) |
OPERATOR CLASS object_name USING index_method |
OPERATOR FAMILY object_name USING index_method |
[ PROCEDURAL ] LANGUAGE object_name |
PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
SCHEMA object_name |
SEQUENCE object_name |
SERVER object_name |
TABLE object_name |
TEXT SEARCH CONFIGURATION object_name |
TEXT SEARCH DICTIONARY object_name |
TEXT SEARCH PARSER object_name |
TEXT SEARCH TEMPLATE object_name |
TRANSFORM FOR type_name LANGUAGE lang_name |
TYPE object_name |
VIEW object_name
and aggregate_signature is:
* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]
설명 (Description)
ALTER EXTENSION은 설치된 확장의 정의를 변경해요. 여러 하위 형식이 있어요.
UPDATE— 이 형식은 확장을 더 새로운 버전으로 업데이트해요. 확장은 현재 설치된 버전을 요청된 버전으로 바꿀 수 있는 적절한 업데이트 스크립트(또는 일련의 스크립트)를 제공해야 해요.SET SCHEMA— 이 형식은 확장의 객체를 다른 스키마로 옮겨요. 이 명령이 성공하려면 확장이 *재배치 가능(relocatable)*해야 해요.ADD member_object— 이 형식은 기존 객체를 확장에 추가해요. 주로 확장 업데이트 스크립트에서 유용해요. 이 객체는 이후 확장의 멤버로 취급되며, 특히 확장을 드롭해야만 드롭할 수 있어요.DROP member_object— 이 형식은 멤버 객체를 확장에서 제거해요. 주로 확장 업데이트 스크립트에서 유용해요. 객체는 드롭되지 않고 확장과의 연결만 끊겨요.
이 작업들에 대한 자세한 내용은 36.17절을 보세요. ALTER EXTENSION을 쓰려면 확장의 소유자여야 해요. ADD/DROP 형식은 추가하거나 제거할 객체의 소유권도 필요해요.
매개변수 (Parameters)
name— 설치된 확장의 이름이에요.new_version— 확장의 원하는 새 버전이에요. 식별자나 문자열 리터럴로 쓸 수 있어요. 지정하지 않으면ALTER EXTENSION UPDATE는 확장의 control 파일에 기본 버전으로 표시된 값으로 업데이트를 시도해요.new_schema— 확장의 새 스키마예요.object_name,aggregate_name,function_name,operator_name,procedure_name,routine_name— 확장에 추가하거나 확장에서 제거할 객체의 이름이에요. 테이블, 집계 함수, 도메인, 외부 테이블, 함수, 연산자, 연산자 클래스, 연산자 패밀리, 프로시저, 루틴, 시퀀스, 텍스트 검색 객체, 타입, 뷰의 이름은 스키마 한정할 수 있어요.source_type— 캐스트(cast)의 소스 데이터 타입 이름이에요.target_type— 캐스트의 대상 데이터 타입 이름이에요.argmode— 함수, 프로시저, 집계 함수 인자의 모드로IN,OUT,INOUT,VARIADIC이에요. 생략하면 기본값은IN이에요.ALTER EXTENSION은 함수의 정체성을 결정할 때 입력 인자만 필요하므로OUT인자에는 실제로 신경 쓰지 않아요. 그래서IN,INOUT,VARIADIC인자만 나열하면 충분해요.argname— 함수, 프로시저, 집계 함수 인자의 이름이에요.ALTER EXTENSION은 함수의 정체성을 결정할 때 인자 데이터 타입만 필요하므로 인자 이름에는 신경 쓰지 않아요.argtype— 함수, 프로시저, 집계 함수 인자의 데이터 타입이에요.left_type,right_type— 연산자 인자의 데이터 타입(선택적으로 스키마 한정)이에요. 접두 연산자의 빠진 인자에는NONE을 쓰세요.PROCEDURAL— 이건 노이즈 단어(noise word)예요.type_name— 트랜스폼(transform)의 데이터 타입 이름이에요.lang_name— 트랜스폼의 언어 이름이에요.
예제 (Examples)
hstore 확장을 버전 2.0으로 업데이트하려면:
ALTER EXTENSION hstore UPDATE TO '2.0';
hstore 확장의 스키마를 utils로 바꾸려면:
ALTER EXTENSION hstore SET SCHEMA utils;
기존 함수를 hstore 확장에 추가하려면:
ALTER EXTENSION hstore ADD FUNCTION populate_record(anyelement, hstore);
호환성 (Compatibility)
ALTER EXTENSION은 PostgreSQL 확장이에요.
더 알아보기 (Learn more)
- CREATE EXTENSION — 새 확장을 설치하는 명령이에요.
- DROP EXTENSION — 확장을 제거하는 명령이에요.
- CREATE FUNCTION — 확장에 추가할 함수를 만들 수 있어요.