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
語句。
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。