Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  ユーザー定義関数のインストールおよびアンインストール

このページは機械翻訳したものです。

5.7.1 ユーザー定義関数のインストールおよびアンインストール

ユーザー定義関数 (UDF) は、使用する前にサーバーにロードする必要があります。 MySQL では、実行時の手動 UDF ロードおよびサーバー起動時の自動ロードがサポートされています。

UDF がロードされている間、UDF に関する情報は セクション5.7.2「ユーザー定義関数情報の取得」 で説明されているように使用できます。

ユーザー定義関数のインストール

UDF を手動でロードするには、CREATE FUNCTION ステートメントを使用します。 例:

CREATE FUNCTION metaphon
  RETURNS STRING
  SONAME 'udf_example.so';

UDF ファイルのベース名は、プラットフォームによって異なります。 一般的な接尾辞は、.so for Unix および Unix のようなシステム、.dll for Windows です。

CREATE FUNCTION には、次の効果があります:

  • UDF がサーバーにロードされ、すぐに使用できるようになります。

  • UDF が mysql.func システムテーブルに登録され、サーバーの再起動後も保持されます。 このため、CREATE FUNCTION には、mysql システムデータベースに対する INSERT 権限が必要です。

  • UDF は、インストールされている UDF に関する実行時情報を提供するパフォーマンススキーマ user_defined_functions テーブルに追加されます。 セクション5.7.2「ユーザー定義関数情報の取得」を参照してください。

UDF の自動ロードは、通常のサーバー起動シーケンス中に発生します:

  • mysql.func テーブルに登録されている UDF がインストールされます。

  • 起動時にインストールされるコンポーネントまたはプラグインは、関連 UDF を自動的にインストールする場合があります。

  • UDF の自動インストールでは、UDF がパフォーマンススキーマ user_defined_functions テーブルに追加され、インストールされた UDF に関する実行時情報が提供されます。

--skip-grant-tables オプションを使用してサーバーを起動した場合、mysql.func テーブルに登録されている UDF はロードされず、使用できません。 これは、コンポーネントまたはプラグインによって自動的にインストールされる UDF には適用されません。

ユーザー定義関数のアンインストール

UDF を削除するには、DROP FUNCTION ステートメントを使用します。 例:

DROP FUNCTION metaphon;

DROP FUNCTION には、次の効果があります:

  • UDF をアンロードして使用できないようにします。

  • mysql.func システムテーブルから UDF が削除されます。 このため、DROP FUNCTION には、mysql システムデータベースに対する DELETE 権限が必要です。 UDF が mysql.func テーブルに登録されなくなったため、サーバーはその後の再起動時に UDF をロードしません。

  • インストールされている UDF に関する実行時情報を提供する UDF がパフォーマンススキーマ user_defined_functions テーブルから削除されます。

DROP FUNCTION を使用して、CREATE FUNCTION を使用するのではなく、コンポーネントまたはプラグインによって自動的にインストールされる UDF を削除することはできません。 このような UDF は、UDF をインストールしたコンポーネントまたはプラグインがアンインストールされると、自動的に削除されます。

ユーザー定義関数の再インストールまたはアップグレード

UDF に関連付けられた共有ライブラリを再インストールまたはアップグレードするには、DROP FUNCTION ステートメントを発行し、共有ライブラリをアップグレードしてから、CREATE FUNCTION ステートメントを発行します。 最初に共有ライブラリをアップグレードしてから DROP FUNCTION を使用すると、サーバーが予期せず停止する可能性があります。