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 ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) SET SCHEMA new_schema ここで、actionは以下のいずれかです。 CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT IMMUTABLE | STABLE | VOLATILE [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER 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を持たなければなりません。 (この制限により、強制的に、所有者の変更が関数の削除と再作成で行うことができない何らかの処理を行わないようになります。 しかし、スーパーユーザはすべての関数の所有者を変更することができます。)
既存の関数名です(スキーマ修飾名も可)。
引数のモードで、IN、OUT、 INOUTのいずれかです。 省略された場合のデフォルトはINです。 関数の識別を行うには入力引数のみが必要ですので、実際にはALTER FUNCTIONがOUT引数を無視することに注意してください。 ですので、INおよびINOUT引数を列挙することで十分です。
引数の名前です。 関数の識別を行うには引数のデータ型のみが必要ですので、実際にはALTER FUNCTIONは引数の名前を無視することに注意してください。
もしあれば、その関数の引数のデータ型(複数可)です。 (スキーマで修飾可能です)
新しい関数名です。
新しい関数の所有者です。 関数にSECURITY DEFINERが指定されている場合、その後は新しい所有者の権限で関数が実行されることに注意してください。
関数の新しいスキーマです。
CALLED ON NULL INPUTは、引数の一部またはすべてがNULLの場合に関数が呼び出されるように変更します。 RETURNS NULL ON NULL INPUTもしくはSTRICTは、引数の一部がNULLの場合に関数が呼び出されないように変更します。 詳細はCREATE FUNCTIONを参照してください。
関数の揮発性を指定した設定に変更します。 関数の揮発性に関する詳細はCREATE FUNCTIONを参照してください。
関数のセキュリティを定義者にするか否かを変更します。 EXTERNALキーワードはSQLとの互換性のためのものであり、無視されます。 この機能の詳細はCREATE FUNCTIONを参照してください。
関数の推定実行コストを変更します。 詳細はCREATE FUNCTIONを参照してください。
集合を返す関数で返される推定行数を変更します。 詳細はCREATE FUNCTIONを参照してください。
関数呼び出し時に設定パラメータに対して行われる代入を追加または変更します。 valueがDEFAULT、またはそれと等価なRESETが使用された場合、関数の局所的な設定は削除されます。 このため、関数はその環境内に存在する値で実行されます。 すべての関数の局所的な設定を整理したければRESET ALLを使用してください。 SET FROM CURRENTは、セッションにおけるパラメータの現在値を関数起動時に適用される値として保管します。
標準SQLとの互換性のためのものであり、無視されます。
integer型用のsqrt関数の名前をsquare_rootに変更します。
ALTER FUNCTION sqrt(integer) RENAME TO square_root;
integer型用のsqrt関数の所有者をjoeに変更します。
ALTER FUNCTION sqrt(integer) OWNER TO joe;
integer型用のsqrt関数のスキーマをmathsに変更します。
ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
関数用に検索パスを自動的に設定するように調整します。
ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp;
関数用のsearch_pathの自動設定を無効にします。
ALTER FUNCTION check_password(text) RESET search_path;
呼び出し元で使用される検索パスでこの関数が実行されるようになります。