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
オプション
引数のモードと名前を指定できること