MySQL自定义函数

来源:互联网 发布:广州网络咨询医生招聘 编辑:程序博客网 时间:2024/06/06 17:40


首先,做一个热身。引进一个系统函数LAST_INSERT_ID();
这个函数的功能就是放回上一次插入的数据的id
做个示范
插入数据                                                                                                            vdfb
mysql> INSERT test VALUES(NULL,'基辅迪纳摩');
调用LAST_INSERT_ID()
mysql> SELECT  LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+
当前表中的全部数据
mysql> SELECT * FROM test;
+----+------------+
| id | username   |
+----+------------+
|  1 | 巴西体育           |
|  2 | 阿根廷独立          |
|  3 | 基辅迪纳摩          |
+----+------------+


注意如果,同时间插入两条数据,返回的是第一条数据的id
插入数据
mysql> INSERT test(username) VALUES('巴西桑托斯'),('荷兰阿贾克斯 ');
调用函数
mysql> SELECT  LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                4 |
+------------------+
查询当前表中的全部数据
mysql> SELECT * FROM test;
+----+---------------+
| id | username      |
+----+---------------+
|  1 | 巴西体育              |
|  2 | 阿根廷独立             |
|  3 | 基辅迪纳摩             |
|  4 | 巴西桑托斯            |
|  5 | 荷兰阿贾克斯            |
+----+---------------+

例1
创建自定义函数,通过这个函数我可以一次插入一条记录,并返回所说插入记录的id号

mysql> DELIMITER //
mysql> CREATE FUNCTION adduser(username VARCHAR(20))
    -> RETURNS INT UNSIGNED
    -> BEGIN
    -> INSERT test(username) VALUES(username);
    -> RETURN LAST_INSERT_ID();
    -> END
    -> //
Query OK, 0 rows affected (0.01 sec)
在创建结束之用DELIMITER ;修改一下分隔符
mysql> DELIMITER ;

调用自定义函数
mysql> SELECT adduser('AC Milan');
+---------------------+
| adduser('AC Milan') |
+---------------------+
|                   8 |
+---------------------+
查看当前表中记录
mysql> SELECT * FROM test;
+----+---------------+
| id | username      |
+----+---------------+
|  1 | 巴西体育              |
|  2 | 阿根廷独立             |
|  3 | 基辅迪纳摩             |
|  4 | 巴西桑托斯            |
|  5 | 荷兰阿贾克斯            |
|  8 | AC Milan      |
+----+---------------+


0 0
原创粉丝点击