支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本: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

ALTER AGGREGATE

ALTER AGGREGATE — 更改聚合函數的定義

概要

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

where aggregate_signature is:

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

描述

ALTER AGGREGATE 更改聚合函數的定義。

您必須擁有聚合函數才能使用 ALTER AGGREGATE。 要更改聚合函數的綱要,您還必須擁有新綱要上的 CREATE 權限。 要變更擁有者,您必須能夠 SET ROLE 為新的擁有角色,並且該角色必須在聚合函數的綱要上具有 CREATE 權限。(這些限制確保變更擁有者不會執行任何您可以透過刪除和重新建立聚合函數來執行的動作。但是,超級使用者可以變更任何聚合函數的擁有權。)

參數

name

現有聚合函數的名稱(可選擇包含綱要限定詞)。

argmode

引數的模式:INVARIADIC。 如果省略,則預設為 IN

argname

引數的名稱。 請注意,ALTER AGGREGATE 實際上並未注意引數名稱,因為只需要引數資料類型來確定聚合函數的身份。

argtype

聚合函數運算的輸入資料類型。 要參照零引數聚合函數,請寫入 * 來代替引數規格的清單。 要參照排序集聚合函數,請在直接和聚合的引數規格之間寫入 ORDER BY

new_name

聚合函數的新名稱。

new_owner

聚合函數的新擁有者。

new_schema

聚合函數的新綱要。

注意

建議的參照排序集聚合的語法是在直接和聚合的引數規格之間寫入 ORDER BY,其樣式與 CREATE AGGREGATE 中相同。 但是,也可以省略 ORDER BY,並將直接和聚合的引數規格合併到單一清單中。 在此縮寫形式中,如果在直接和聚合的引數清單中都使用了 VARIADIC "any",則僅寫入 VARIADIC "any" 一次。

範例

若要將 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 陳述式。

提交更正

如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。