可加载函数顾名思义,必须先加载到服务器中才能使用。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
权限。它将函数添加到 Performance Schema
user_defined_functions
表中,该表提供有关已安装的可加载函数的运行时信息。请参阅第 7.7.2 节 “获取有关可加载函数的信息”。
可加载函数的自动加载发生在正常的服务器启动顺序期间
在
mysql.func
表中注册的函数将被安装。在启动时安装的组件或插件可能会自动安装相关的函数。
自动函数安装会将函数添加到 Performance Schema
user_defined_functions
表中,该表提供有关已安装函数的运行时信息。
如果服务器使用 --skip-grant-tables
选项启动,则 mysql.func
表中注册的函数将不会加载,并且不可用。这不适用于由组件或插件自动安装的函数。
要删除可加载函数,请使用 DROP FUNCTION
语句。例如
DROP FUNCTION metaphon;
DROP FUNCTION
具有以下效果
它卸载函数,使其不可用。
它从
mysql.func
系统表中删除函数。因此,DROP FUNCTION
需要mysql
系统数据库的DELETE
权限。由于函数不再在mysql.func
表中注册,因此服务器不会在随后的重启期间加载该函数。它从 Performance Schema
user_defined_functions
表中删除函数,该表提供有关已安装的可加载函数的运行时信息。
DROP FUNCTION
不能用于删除由组件或插件而不是使用 CREATE FUNCTION
自动安装的可加载函数。当安装了该函数的组件或插件被卸载时,该函数也会被自动删除。
要重新安装或升级与可加载函数关联的共享库,请发出一个DROP FUNCTION
语句,升级共享库,然后发出一个CREATE FUNCTION
语句。如果您先升级共享库,然后再使用DROP FUNCTION
,服务器可能会意外关闭。