首先,做一个热身。引进一个系统函数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 |
+----+---------------+