ALTER AGGREGATE — 集約関数定義を変更する
ALTER AGGREGATEname(aggregate_signature) RENAME TOnew_nameALTER AGGREGATEname(aggregate_signature) OWNER TO {new_owner| CURRENT_USER | SESSION_USER } ALTER AGGREGATEname(aggregate_signature) SET SCHEMAnew_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型の順序集約関数mypercentileをmyschemaスキーマに移動します。
ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;
以下も動作します。
ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;
標準SQLにはALTER AGGREGATE文はありません。