ALTER AGGREGATE <refpurpose>change the definition of an aggregate function</refpurpose> — 集約関数定義を変更する
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
<phrase>where <replaceable>aggregate_signature</replaceable> is:</phrase> ここでaggregate_signature
は以下の通りです。 * | [argmode
] [argname
]argtype
[ , ... ] | [ [argmode
] [argname
]argtype
[ , ... ] ] ORDER BY [argmode
] [argname
]argtype
[ , ... ]
<command>ALTER AGGREGATE</command> changes the definition of an
aggregate function.
ALTER AGGREGATE
は集約関数の定義を変更します。
You must own the aggregate function to use <command>ALTER AGGREGATE</command>.
To change the schema of an aggregate function, you must also have
<literal>CREATE</literal> privilege on the new schema.
To alter the owner, you must be able to <literal>SET ROLE</literal> to the
new owning role, and that role must have <literal>CREATE</literal>
privilege on the aggregate function's schema.
(These restrictions enforce that altering
the owner doesn't do anything you couldn't do by dropping and recreating
the aggregate function. However, a superuser can alter ownership of any
aggregate function anyway.)
ALTER AGGREGATE
を使用するには集約関数の所有者でなければなりません。
集約関数のスキーマを変更するには、新しいスキーマにおけるCREATE
権限も必要です。
所有者を変更するには、新しい所有者ロールに対してSET ROLE
ができなければなりません。また、そのロールは集約関数のスキーマにおいてCREATE
権限を持たなければなりません。
(この制限により、集約関数の削除と再作成を行ってもできないことが、所有者の変更によってもできないようにしています。
しかし、スーパーユーザはすべての集約関数の所有者を変更できます。)
name
The name (optionally schema-qualified) of an existing aggregate function. 既存の集約関数の名前です(スキーマ修飾名も可)。
argmode
The mode of an argument: <literal>IN</literal> or <literal>VARIADIC</literal>.
If omitted, the default is <literal>IN</literal>.
引数のモードで、IN
あるいはVARIADIC
です。
省略された時のデフォルトはIN
です。
argname
The name of an argument.
Note that <command>ALTER AGGREGATE</command> does not actually pay
any attention to argument names, since only the argument data
types are needed to determine the aggregate function's identity.
引数の名前です。
ALTER AGGREGATE
は実際には引数の名前を無視することに注意してください。
これは、集約関数の本体を特定するのに必要になるのは、引数のデータ型だけだからです。
argtype
An input data type on which the aggregate function operates.
To reference a zero-argument aggregate function, write <literal>*</literal>
in place of the list of argument specifications.
To reference an ordered-set aggregate function, write
<literal>ORDER BY</literal> between the direct and aggregated argument
specifications.
集約関数が演算する入力データ型です。
引数を持たない集約関数を参照するには、引数指定のリストに*
と記載してください。
順序集約関数を参照するには、直接引数の指定と集約引数の指定の間にORDER BY
と書いてください。
new_name
The new name of the aggregate function. 新しい集約関数の名前です。
new_owner
The new owner of the aggregate function. 新しい集約関数の所有者です。
new_schema
The new schema for the aggregate function. 集約関数の新しいスキーマです。
The recommended syntax for referencing an ordered-set aggregate
is to write <literal>ORDER BY</literal> between the direct and aggregated
argument specifications, in the same style as in
<link linkend="sql-createaggregate"><command>CREATE AGGREGATE</command></link>. However, it will also work to
omit <literal>ORDER BY</literal> and just run the direct and aggregated
argument specifications into a single list. In this abbreviated form,
if <literal>VARIADIC "any"</literal> was used in both the direct and
aggregated argument lists, write <literal>VARIADIC "any"</literal> only once.
順序集約関数を参照するときの推奨される構文は、CREATE AGGREGATE
と同じ形式で、直接引数の指定と集約引数の指定の間にORDER BY
と書くことです。
しかし、ORDER BY
を省略して、単に直接引数と集約引数を1つのリストにまとめても動作します。
VARIADIC "any"
が直接引数のリストと集約引数のリストの両方に対して使われていた場合、この省略形式ではVARIADIC "any"
を1度だけ書いてください。
To rename the aggregate function <literal>myavg</literal> for type
<type>integer</type> to <literal>my_average</literal>:
integer
型用のmyavg
集約関数の名前をmy_average
に変更します。
ALTER AGGREGATE myavg(integer) RENAME TO my_average;
To change the owner of the aggregate function <literal>myavg</literal> for type
<type>integer</type> to <literal>joe</literal>:
integer
型用のmyavg
集約関数の所有者をjoe
に変更します。
ALTER AGGREGATE myavg(integer) OWNER TO joe;
To move the ordered-set aggregate <literal>mypercentile</literal> with
direct argument of type <type>float8</type> and aggregated argument
of type <type>integer</type> into schema <literal>myschema</literal>:
直接引数がfloat8
型、集約引数がinteger
型の順序集約関数mypercentile
をmyschema
スキーマに移動します。
ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;
This will work too: 以下も動作します。
ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;
There is no <command>ALTER AGGREGATE</command> statement in the SQL
standard.
標準SQLにはALTER AGGREGATE
文はありません。