可加载函数,顾名思义,必须先加载到服务器中才能使用。MySQL 支持在服务器启动期间自动加载函数,并在之后手动加载。
当可加载函数被加载时,有关它的信息将按照第 7.7.2 节,“获取有关可加载函数的信息”中所述的方式提供。
要手动加载可加载函数,请使用CREATE FUNCTION
语句。例如
CREATE FUNCTION metaphon
RETURNS STRING
SONAME 'udf_example.so';
文件基本名称取决于您的平台。常见的扩展名是 Unix 和类 Unix 系统的 .so
,Windows 的 .dll
。
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
,服务器可能会意外关闭。