CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|REAL|INTEGER} SONAME shared_library_name DROP FUNCTION function_name
ユーザ定義関数(UDF)は、ABS()
や
CONCAT()
などの MySQL
ネイティブ(組み込み)関数と同様に動作する新しい関数を追加して
MySQL を拡張するための手段です。
AGGREGATE
は、MySQL バージョン 3.23
で新しく追加されました。AGGREGATE
関数は SUM
や COUNT()
などの MySQL
のネイティブグループ
関数とまったく同じように動作します。
CREATE FUNCTION
は、関数の名前、型、および共有ライブラリ名を
mysql.func
システムテーブルに保存します。関数を作成および削除するには、mysql
データベースに対する INSERT
特権および DELETE
特権を持っている必要があります。
mysqld
を起動する際に
--skip-grant-tables
オプションが指定されていなかった場合、すべてのアクティブな関数はサーバが起動するたびに再ロードされます。オプションが指定されていた場合、UDF
の初期化は行われず、それを使用することはできません(アクティブな関数とは
CREATE FUNCTION
でロードされたが
DROP FUNCTION
による削除は行われていない関数)。
ユーザ定義関数の作成手順については、項13.2. 「MySQL への新しい関数の追加」
を参照してください。UDF
のメカニズムが機能するには、関数を C または
C++
で記述する必要があります。また、オペレーティングシステムでダイナミックローディングがサポートされていること、および
mysqld
を(静的ではなく)動的にコンパイルしている必要があります。
注意: AGGREGATE
を実行するには、type
カラムを含む mysql.func
テーブルが必要です。このテーブルがない場合、スクリプト
mysql_fix_privilege_tables
を実行して、このテーブルを作成する必要があります。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.