PostgreSQLでパラメータなし関数を削除する:初心者向けチュートリアル
PostgreSQLでパラメータなし関数を削除する方法
関数引数なしで関数を削除する方法
PostgreSQL 10以降では、スキーマ内に同じ名前の関数がない場合、関数名を指定するだけで削除できます。これは、次のコマンドで行うことができます。
DROP FUNCTION function_name;
例
次のコマンドは、my_function
という名前の関数を削除します。
DROP FUNCTION my_function;
スキーマ内に同じ名前の関数 (引数が異なる) が複数ある場合は、DROP FUNCTION
コマンドで引数のデータ型を指定する必要があります。これにより、削除する関数を特定できます。
DROP FUNCTION my_function(integer);
注意事項
- 関数を削除する前に、その関数に依存する他のオブジェクトがないことを確認してください。
DROP FUNCTION
コマンドは、その関数の所有者のみが実行できます。
PostgreSQL 9.6 以前では、スキーマ名を指定して関数を削除する必要がありました。これは、次のコマンドで行うことができます。
DROP FUNCTION schema_name.function_name(argument_data_types);
DROP FUNCTION public.my_function(integer);
PostgreSQLでパラメータなし関数を削除するサンプルコード
PostgreSQL 10以降
DROP FUNCTION my_function;
DROP FUNCTION public.my_function;
説明
my_function
はパラメータなし関数であるため、引数のデータ型を指定する必要はありません。- PostgreSQL 10以降では、スキーマ名を指定する必要はありません。
注
- 上記のコードは、関数
my_function
が存在することを前提としています。関数が存在しない場合は、エラーが発生します。
PostgreSQLでパラメータなし関数を削除するその他の方法
pgAdminを使用する
pgAdminは、PostgreSQLデータベースを管理するためのグラフィカルツールです。pgAdminを使用して、パラメータなし関数を削除するには、次の手順を実行します。
- pgAdminでデータベースに接続します。
- 削除する関数を含むスキーマを展開します。
- 関数オブジェクトを右クリックし、[削除]を選択します。
- 確認ダイアログで[OK]をクリックします。
SQLを実行するスクリプトを使用して、パラメータなし関数を削除することもできます。これを行うには、次の手順を実行します。
- テキストエディタで新しいスクリプトファイルを作成します。
- 次のコードをスクリプトファイルに保存します。
DROP FUNCTION my_function;
my_function
を実際の関数名に置き換えます。- PostgreSQLコマンドプロンプトを開きます。
- 次のコマンドを使用して、スクリプトを実行します。
psql -f script_file.sql
script_file.sql
を実際のスクリプトファイル名に置き換えます。
- 次のコードを含むPL/pgSQL関数をを作成します。
CREATE OR REPLACE FUNCTION drop_function(function_name text)
RETURNS void
AS $$
BEGIN
EXECUTE 'DROP FUNCTION ' || quote_literal(function_name);
END;
$$ LANGUAGE plpgsql;
- 次のコマンドを使用して、
drop_function
関数を呼び出して、my_function
という名前の関数を削除します。
SELECT drop_function('my_function');
- 次のクエリを使用して、削除する関数の情報を見つけます。
SELECT *
FROM pg_proc
WHERE proname = 'my_function'
AND proargtypes IS NULL;
oid
列の値を次のクエリに代入して、関数を削除します。
DELETE FROM pg_proc
WHERE oid = 12345;
- 上記のクエリで、
12345
を実際のoid
値に置き換えます。
- 上記の方法は、上級ユーザー向けです。
- システムカタログテーブルを直接操作する前に、PostgreSQLドキュメントを参照することをお勧めします。
sql database postgresql