可加载函数,如其名称所示,必须在服务器启动前加载到服务器中,然后才能使用。MySQL支持自动函数加载和手动加载。
当可加载函数加载时,关于它的信息将如第7.7.2节,“获取可加载函数信息”所述。
要手动加载可加载函数,请使用CREATE FUNCTION
语句。例如:
CREATE FUNCTION metaphon
RETURNS STRING
SONAME 'udf_example.so';
文件基本名称取决于您的平台。常见的后缀是.so
用于Unix和类Unix系统,.dll
用于Windows。
CREATE FUNCTION
具有以下效果:
-
它将函数加载到服务器中,使其立即可用。
-
它在
mysql.func
系统表中注册函数,以便在服务器重新启动时保持持久性。因此,CREATE FUNCTION
需要mysql
系统数据库的INSERT
权限。 -
它将函数添加到性能模式
user_defined_functions
表中,该表提供了关于安装的可加载函数的运行时信息。请参阅第7.7.2节,“获取可加载函数信息”。
可加载函数的自动加载发生在服务器正常启动序列中:
-
在
mysql.func
表中注册的函数将被安装。 -
在启动时安装的组件或插件可能会自动安装相关函数。
-
自动函数安装将函数添加到性能模式
user_defined_functions
表中,该表提供了关于安装的函数的运行时信息。
如果服务器以--skip-grant-tables
选项启动,mysql.func
表中的函数将不会加载且不可用。这不适用于组件或插件自动安装的函数。
要删除可加载函数,请使用DROP FUNCTION
语句。例如:
DROP FUNCTION metaphon;
DROP FUNCTION
具有以下效果:
-
它卸载函数,使其不可用。
-
它从
mysql.func
系统表中删除函数。因此,DROP FUNCTION
需要mysql
系统数据库的DELETE
权限。由于函数不再在mysql.func
表中注册,服务器在后续重新启动时不会加载该函数。 -
它从性能模式
user_defined_functions
表中删除函数,该表提供了关于安装的可加载函数的运行时信息。
DROP FUNCTION
不能用于删除由组件或插件自动安装的可加载函数,而不是使用CREATE FUNCTION
安装的。这样的函数也将在卸载安装它的组件或插件时自动删除。
要重新安装或升级与可加载函数关联的共享库,发出DROP FUNCTION
语句,升级共享库,然后发出CREATE FUNCTION
语句。如果您首先升级共享库,然后使用DROP FUNCTION
,服务器可能会意外关闭。