バージョンごとのドキュメント一覧

ALTER AGGREGATE

ALTER AGGREGATE <refpurpose>change the definition of an aggregate function</refpurpose> — 集約関数定義を変更する

概要

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


<phrase>where <replaceable>aggregate_signature</replaceable> is:</phrase>

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

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

説明

<title>Description</title>

<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権限を持たなければなりません。 (この制限により、集約関数の削除と再作成を行ってもできないことが、所有者の変更によってもできないようにしています。 しかし、スーパーユーザはすべての集約関数の所有者を変更できます。)

パラメータ

<title>Parameters</title>
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. 集約関数の新しいスキーマです。

注釈

<title>Notes</title>

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度だけ書いてください。

<title>Examples</title>

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型の順序集約関数mypercentilemyschemaスキーマに移動します。

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

This will work too: 以下も動作します。

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

互換性

<title>Compatibility</title>

There is no <command>ALTER AGGREGATE</command> statement in the SQL standard. 標準SQLにはALTER AGGREGATE文はありません。

関連項目

<title>See Also</title> CREATE AGGREGATE, DROP AGGREGATE