2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 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 語句。

提交更正

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