教你写MySQL UDF
第一次听说UDF是,一片懵懂。还被一个半桶水的培训师忽悠说是存储函数即是UDF。现在想来真是匪夷所思,害人不浅。
从名字上可以得知UDF(user define function)为用户自定义函数。UDF在一定程度上可以使得普通用户定制自己的MySQL函数库,减少对内建函数的依赖。UDF 的功能还是非常强大的。
各类技术人员都可以开发相应的UDF。
管理员可以开发一些与系统交互的UDF。而开发人员可将常用功能用UDF替代存储函数,这样可以大幅提高执行速度和效率。
这篇BLOG的目的想给希望编写UDF的读者提供一些帮助,但读者应该根据自己的需要添加某些具体函数。
现在直入话题,MySQL手册上确实提供了有关MySQL UDF的一些规则。读者可以参考链接。
咱们分4步骤创建一个UDF:
- 编写代码
- 编译
- 安装
- 使用
下面给出一个简单的UDF。其作用就是往error日志里面写入语句。
为了做这个实验,我们将使用如下平台:
- OS:OpenSolaris,
- DB:MySQL 5.1.39
- C compiler: Sun C
实例代码如下:
/* You owed me when you copy this code without informing dingze.zhu@gmail.com* It’s owned by mysqlsystems.com*/#if defined(_WIN32)
#include <stdlib.h> #define LIBVERSION “mysqlsystems_udf_log version 0.1 beta” #ifdef __cplusplus /** DLLEXP DLLEXP /** DLLEXP DLLEXP #ifdef __cplusplus |
编写完毕代码后,需要将源代码编译成动态库.so文件。随后将动态库拷贝到MySQL安装目录的lib/plugin下。(在那里我们还可以找到Innodb的动态库文件)
根据你使用的OS、MySQL等环境。可能有所出入。在本实验中,使用如下
cc -I/user/local/mysql/include -shared -o mysqlsystems_udf_log.so mysqlsystems_udf_log.c
下图是安装和使用的过程:

查看MySQL的error日志:
网友可以看到,在error log第22号,出现了我们输入的 hello world字样。



最新评论