ALTER FUNCTION

名前

ALTER FUNCTION -- 関数定義を変更する

概要

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

説明

ALTER FUNCTIONは関数定義を変更します。

ALTER FUNCTIONを使用するには関数の所有者でなければなりません。 関数のスキーマを変更するには、新しいスキーマにおけるCREATE権限も必要です。 所有者を変更するには、直接または間接的に新しいロールのメンバでなければなりません。 また、そのロールが関数のスキーマにおいてCREATEを持たなければなりません。 (この制限により、強制的に、所有者の変更が関数の削除と再作成で行うことができない何らかの処理を行わないようになります。 しかし、スーパーユーザはすべての関数の所有者を変更することができます。)

パラメータ

name

既存の関数名です(スキーマ修飾名も可)。

argmode

引数のモードで、INOUTINOUTのいずれかです。 省略された場合のデフォルトはINです。 関数の識別を行うには入力引数のみが必要ですので、実際にはALTER FUNCTIONOUT引数を無視することに注意してください。 ですので、INおよびINOUT引数を列挙することで十分です。

argname

引数の名前です。 関数の識別を行うには引数のデータ型のみが必要ですので、実際にはALTER FUNCTIONは引数の名前を無視することに注意してください。

argtype

もしあれば、その関数の引数のデータ型(複数可)です。 (スキーマで修飾可能です)

new_name

新しい関数名です。

new_owner

新しい関数の所有者です。 関数にSECURITY DEFINERが指定されている場合、その後は新しい所有者の権限で関数が実行されることに注意してください。

new_schema

関数の新しいスキーマです。

CALLED ON NULL INPUT
RETURNS NULL ON NULL INPUT
STRICT

CALLED ON NULL INPUTは、引数の一部またはすべてがNULLの場合に関数が呼び出されるように変更します。 RETURNS NULL ON NULL INPUTもしくはSTRICTは、引数の一部がNULLの場合に関数が呼び出されないように変更します。 詳細はCREATE FUNCTIONを参照してください。

IMMUTABLE
STABLE
VOLATILE

関数の揮発性を指定した設定に変更します。 関数の揮発性に関する詳細はCREATE FUNCTIONを参照してください。

[ EXTERNAL ] SECURITY INVOKER
[ EXTERNAL ] SECURITY DEFINER

関数のセキュリティを定義者にするか否かを変更します。 EXTERNALキーワードはSQLとの互換性のためのものであり、無視されます。 この機能の詳細はCREATE FUNCTIONを参照してください。

RESTRICT

標準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;

互換性

この文の一部は標準SQLのALTER FUNCTION文に従っています。 標準ではより多くの関数の属性を変更できますが、関数名の変更、関数を定義者の権限で実行するかどうかの変更、関数の所有者やスキーマ、揮発性の変更を行う機能はありません。 また、標準ではRESTRICTキーワードを必須としていますが、PostgreSQLでは省略可能です。

関連項目

CREATE FUNCTION, DROP FUNCTION