ALTER AGGREGATE — 集約関数定義を変更する
ALTER AGGREGATEname
(aggregate_signature
) RENAME TOnew_name
ALTER AGGREGATEname
(aggregate_signature
) OWNER TO {new_owner
| CURRENT_ROLE | 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
権限も必要です。
所有者を変更するには、新しい所有者ロールに対してSET ROLE
ができなければなりません。また、そのロールは集約関数のスキーマにおいて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
文はありません。