7.7.1 安装和卸载可加载函数
可加载函数,名称自明,必须在服务器启动前加载,以便使用。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
权限。 -
它将函数添加到性能chema中的
user_defined_functions
表中,该表提供了关于安装的可加载函数的实时信息。请参阅第7.7.2节,“获取关于可加载函数的信息”。
在正常服务器启动序列中,自动加载可加载函数:
-
注册到
mysql.func
表中的函数被安装。 -
在启动时安装的组件或插件可能会自动安装相关函数。
-
自动函数安装将函数添加到性能chema中的
user_defined_functions
表中,该表提供了关于安装的函数的实时信息。
如果服务器使用--skip-grant-tables
选项启动,注册在mysql.func
表中的函数将不可用。这不适用于由组件或插件自动安装的函数。
要删除可加载函数,请使用DROP FUNCTION
语句。例如:
DROP FUNCTION metaphon;
DROP FUNCTION
具有以下效果:
-
它卸载函数以使其不可用。
-
它从
mysql.func
系统表中删除函数。因此,DROP FUNCTION
需要DELETE
权限以访问mysql
系统数据库。函数不再注册在mysql.func
表中,服务器在随后的重启时不会加载该函数。 -
它从性能chema的
user_defined_functions
表中删除函数,该表提供了关于安装的可加载函数的运行时信息。
DROP 函数不能用来删除由组件或插件自动安装的可加载函数,而不是使用CREATE 函数
。这种函数也将在卸载安装它的组件或插件时自动删除。