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
whereaggregate_signature
is: * | [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
聚合函數的新綱要。
建議的參照排序集聚合的語法是在直接和聚合的引數規格之間寫入 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
陳述式。
如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。