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