必须先将用户定义的函数(UDF)装入服务器,然后才能使用它们。MySQL支持在运行时手动加载UDF,并在服务器启动期间自动加载。
加载UDF时,如第5.7.2节“获取用户定义的功能信息”中所述,可以获得有关它的信息。
安装用户定义的功能
要手动加载UDF,请使用以下 CREATE FUNCTION语句。例如:
CREATE FUNCTION metaphon
RETURNS STRING
SONAME 'udf_example.so';
UDF文件的基本名称取决于您的平台。通用后缀.so用于Unix和类Unix系统, .dll用于Windows。
CREATE FUNCTION 具有以下效果:
- 它将UDF加载到服务器中以使其立即可用。
- 它将UDF注册到
mysql.func系统表中,以使其在服务器重新启动后保持不变。因此,CREATE FUNCTION需要系统数据库的INSERT特权mysql。 - 它将UDF添加到Performance Schema
user_defined_functions表中,该 表提供有关已安装UDF的运行时信息。请参见 第5.7.2节“获取用户定义的功能信息”。
在正常的服务器启动过程中会自动进行UDF加载:
mysql.func表中 注册的UDF已安装。- 在启动时安装的服务器组件或插件可能会自动安装相关的UDF。
- 自动UDF安装会将UDF添加到“性能模式”
user_defined_functions表中,该表提供有关已安装UDF的运行时信息。
如果使用该--skip-grant-tables选项启动服务器 ,则mysql.func表中注册的UDF 不会被加载并且不可用。这不适用于由组件或插件自动安装的UDF。
卸载用户定义的功能
要删除UDF,请使用以下 DROP FUNCTION语句。例如:
DROP FUNCTION metaphon;
DROP FUNCTION 具有以下效果:
- 它会卸载UDF以使其不可用。
- 它将UDF从
mysql.func系统表中删除。因此,DROP FUNCTION需要系统数据库的DELETE特权mysql。由于UDF不再在mysql.func表中注册,因此服务器不会在后续重新启动期间加载UDF。 - 它从
user_defined_functions提供有关已安装UDF的运行时信息的“性能模式” 表中删除 UDF。
DROP FUNCTION不能用于删除由服务器组件或插件(而非通过使用)自动安装的UDF CREATE FUNCTION。当卸载了安装了该UDF的组件或插件时,该UDF也会自动删除。
重新安装或升级用户定义的功能
要重新安装或升级与UDF关联的共享库,请发出一条 DROP FUNCTION语句,升级共享库,然后发出一条 CREATE FUNCTION语句。如果先升级共享库,然后使用 DROP FUNCTION,则服务器可能会意外关闭。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




