ALTER AGGREGATE — 집계 함수 정의 바꾸기
ALTER AGGREGATE이름
(집계함수_식별구문
) RENAME TO새이름
ALTER AGGREGATE이름
(집계함수_식별구문
) OWNER TO {새소유주
| CURRENT_USER | SESSION_USER } ALTER AGGREGATE이름
(집계함수_식별구문
) SET SCHEMA새스키마
집계함수_식별구문
자리에는: * | [인자모드
] [인자이름
]인자자료형
[ , ... ] | [ [인자모드
] [인자이름
]인자자료형
[ , ... ] ] ORDER BY [인자모드
] [인자이름
]인자자료형
[ , ... ]
ALTER AGGREGATE
명령은 집계 함수 정의를 바꾼다.
ALTER AGGREGATE
명령은 해당 집계 함수 소유주만 실행할 수 있다.
해당 스키마를 바꾼다면, 명령을 실행하는 사용자가 새 스키마에 대해
CREATE
권한이 있어야 한다.
소유주를 바꾼다면, 명령을 실행하는 사용자는 새 소유주 소속 구성원이어야
하며, 새 소유주는 이 함수의 스키마에 대해서 CREATE
권한이 있어야한다. (새 소유주가 해당 함수를 지우거나, 새로 만들 수
있어야 하기 때문이다. 슈퍼유저는 이런 제약 조건 없이 소유주를 바꿀 수
있다.)
이름
작업 대상 집계 함수 이름(스키마 포함).
인자모드
함수 인자의 종류를 지정한다: IN
또는 VARIADIC
.
안 쓰면 기본값인 IN
이다.
인자이름
인자 이름.
ALTER AGGREGATE
명령에서는
이 인자 이름에 상관 없이 그 인자 자료형만 사용해서,
해당 집계 함수를 찾는다는 것을 알고 있으면 된다.
인자자료형
해당 집계 함수의 입력 인자 자료형 이름.
아무런 입력 자료형을 사용하지 않는 집계 함수인 경우는
이 자리에, *
문자를 지정한다.
정렬된 집합 집계 함수인 경우는 ORDER BY
구문을
포함 해서 해당 함수를 지정한다.
새이름
해당 집계 함수의 새 이름.
새소유주
해당 집계 함수의 새 소유주 이름.
새스키마
해당 집계 함수의 새 스키마 이름.
정렬된 집합 집계 함수를 지정할 때는,
그 함수를 만들 때 정의한 (CREATE AGGREGATE 참조)
ORDER BY
구문 그대로 사용하기를 권한다.
한편, ORDER BY
구문을 생략하고,
입력 자료형과 집계용 인자 정의를 같은 인자 목록으로 해서 실행할 수도 있다.
간단한 양식으로, VARIADIC "any"
구문이,
입력 자료형과 집계용 인자 목록에서 둘다 쓰인다면,
VARIADIC "any"
내용은 한 번 쓰면 된다.
integer
자료형 대상 myavg
집계 함수 이름을 my_average
로 바꾸는 명령:
ALTER AGGREGATE myavg(integer) RENAME TO my_average;
integer
자료형 대상 myavg
집계 함수의 소유주를 joe
로 바꾸는 명령:
ALTER AGGREGATE myavg(integer) OWNER TO joe;
float8
자료형 대상, integer
자료형을
집계용 인자로 하는 mypercentile
정렬된 집합
집계 함수의 스키마를 myschema
로 바꾸는 명령:
ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;
위 구문과 아래 구문은 같은 일을 한다:
ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;
ALTER AGGREGATE
구문은 표준 SQL 구문이 아니다.