★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

ALTER AGGREGATE

ALTER AGGREGATE — 集約関数定義を変更する

概要

ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
ALTER AGGREGATE name ( aggregate_signature )
                OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema


ここでaggregate_signatureは以下の通りです。

* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

説明

ALTER AGGREGATEは集約関数の定義を変更します。

ALTER AGGREGATEを使用するには集約関数の所有者でなければなりません。 集約関数のスキーマを変更するには、新しいスキーマにおけるCREATE権限も必要です。 所有者を変更するには、直接または間接的に新しい所有者ロールのメンバでなければなりません。 また、そのロールは集約関数のスキーマにおいてCREATE権限を持たなければなりません。 (この制限により、集約関数の削除と再作成を行ってもできないことが、所有者の変更によってもできないようにしています。 しかし、スーパーユーザはすべての集約関数の所有者を変更することができます。)

パラメータ

name

既存の集約関数の名前です(スキーマ修飾名も可)。

argmode

引数のモードで、INあるいはVARIADICです。 省略された時のデフォルトはINです。

argname

引数の名前です。 ALTER AGGREGATEは実際には引数の名前を無視することに注意してください。 これは、集約関数の本体を特定するのに必要になるのは、引数のデータ型だけだからです。

argtype

集約関数が演算する入力データ型です。 引数を持たない集約関数を参照するには、引数指定のリストに*と記載してください。 順序集約関数を参照するには、直接引数の指定と集約引数の指定の間にORDER BYと書いてください。

new_name

新しい集約関数の名前です。

new_owner

新しい集約関数の所有者です。

new_schema

集約関数の新しいスキーマです。

注釈

順序集約関数を参照するときの推奨される構文は、CREATE AGGREGATEと同じ形式で、直接引数の指定と集約引数の指定の間にORDER BYと書くことです。 しかし、ORDER BYを省略して、単に直接引数と集約引数を1つのリストにまとめても動作します。 VARIADIC "any"が直接引数のリストと集約引数のリストの両方に対して使われていた場合、この省略形式ではVARIADIC "any"を1度だけ書いてください。

integer型用のmyavg集約関数の名前をmy_averageに変更します。

ALTER AGGREGATE myavg(integer) RENAME TO my_average;

integer型用のmyavg集約関数の所有者をjoeに変更します。

ALTER AGGREGATE myavg(integer) OWNER TO joe;

直接引数がfloat8型、集約引数がinteger型の順序集約関数mypercentilemyschemaスキーマに移動します。

ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;

以下も動作します。

ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;

互換性

標準SQLにはALTER AGGREGATE文はありません。

関連項目

CREATE AGGREGATE, DROP AGGREGATE