ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
action [ ... ] [ RESTRICT ]
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
RENAME TO new_name
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
SET SCHEMA new_schema
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
DEPENDS ON EXTENSION extension_name
where action is one of:
CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF
[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
PARALLEL { UNSAFE | RESTRICTED | SAFE }
COST execution_cost
ROWS result_rows
SET configuration_parameter { TO | = } { value | DEFAULT }
SET configuration_parameter FROM CURRENT
RESET configuration_parameter
RESET ALL
說明
ALTER FUNCTION 變更一個函數的定義。
您必須是函數擁有者才能使用 ALTER FUNCTION 功能。要變更函數的綱要,您還必須具有新綱要的 CREATE 權限。要變更擁有者,您還必須是新擁有角色的直接或間接成員,並且該角色必須對該函數的綱要具有 CREATE 權限。(這些限制強制改變擁有者不會做任何透過刪除和重新建立函數都無法做到的事情,但是超級用戶可以改變任何函數的所有權。)
參數
name
現有函數的名稱(可以加上綱要)。如果未指定參數列表,則該名稱在其綱要中必須是唯一的。
argmode
參數的模式:IN,OUT,INOUT 或 VARIADIC。如果省略,則預設為 IN。請注意,ALTER FUNCTION 實際上並不關心 OUT 參數,因為只需要輸入參數來確定函數的身份。所以列出 IN,INOUT 和 VARIADIC 參數就足夠了。
argname
參數的名稱。請注意,ALTER FUNCTION 實際上並不關心參數名稱,因為只需要參數資料型別來確定函數的身份。
呼叫函數時,增加或變更要對配置參數進行的指定方式。 如果值為 DEFAULT,或者等價地使用 RESET,那麼函數本地配置將被刪除,以便該函數執行其環境中存在的值。使用 RESET ALL 清除所有功能本地配置。SET FROM CURRENT 將執行 ALTER FUNCTION 時當下參數的值保存為輸入函數時所要應用的值。