DROP FUNCTION — 関数を削除する
DROP FUNCTION [ IF EXISTS ]name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ]
DROP FUNCTIONは既存の関数定義を削除します。
このコマンドを実行できるのは、その関数の所有者のみです。
関数の引数の型は必ず指定しなければなりません。
異なる引数を持つ同じ名前の関数が複数存在する可能性があるからです。
IF EXISTS関数が存在しない場合でもエラーになりません。 この場合注意メッセージが発行されます。
name既存の関数の名前です(スキーマ修飾名も可)。 引数リストを指定しない場合、名前はスキーマ内で一意でなければなりません。
argmode
引数のモードで、IN、OUT、INOUT、VARIADICのいずれかです。
省略された場合のデフォルトはINです。
関数の識別を行うには入力引数のみが必要ですので、実際にはDROP FUNCTIONがOUT引数を無視することに注意してください。
ですので、IN、INOUT、およびVARIADIC引数を列挙することで十分です。
argname
引数の名前です。
関数の識別を行うには引数のデータ型のみが必要ですので、実際にはDROP FUNCTIONは引数の名前を無視することに注意してください。
argtypeもしあれば、その関数の引数のデータ型(スキーマ修飾可能)です。
CASCADE関数に依存するオブジェクト(演算子やトリガなど)を自動的に削除し、さらにそれらのオブジェクトに依存するすべてのオブジェクトも削除します(5.13参照)。
RESTRICT依存しているオブジェクトがある場合、その関数の削除を拒否します。 これがデフォルトです。
次のコマンドは平方根関数を削除します。
DROP FUNCTION sqrt(integer);
複数の関数を1つのコマンドで削除します。
DROP FUNCTION sqrt(integer), sqrt(bigint);
関数名がスキーマ内で一意であれば、引数リストを付けなくても参照することができます。
DROP FUNCTION update_employee_salaries;
これは以下とは異なることに注意してください。
DROP FUNCTION update_employee_salaries();
後者は引数がゼロ個の関数を参照するのに対し、前者は引数の個数はゼロ個も含め、何個でも良く、ただし名前が一意である必要があります。
このコマンドは標準SQLに従いしますが、以下はPostgreSQLの拡張です。
標準SQLでは1つのコマンドで関数を1つ削除することしかできません。
IF EXISTSオプション
引数のモードと名前を指定できること