最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表。研究了一番决定使用Mysql提供了一个LAST_INSERT_ID()的函数。

三种返回mysql教程 插入一条记录返回该记录id方法

MySQL的LAST_INSERT_ID用法

LAST_INSERT_ID

复制代码 代码如下:LAST_INSERT_ID
returns the first automatically generated value that was set for an
AUTO_INCREMENT column by the most recently executed INSERT or UPDATE
statement to affect such a column. For example, after inserting a row
that generates an AUTO_INCREMENT value, you can get the value like
this:mysql> SELECT LAST_INSERT_ID();-> 195

方法一

 

自动返回最后一个 INSERT 或 UPDATE 操作为
AUTO_INCREMENT 列设置的第一个发生的值.
参考这里 

简单说来,就是这个函数将返回插入的那条记录在表中自增的那个字段的值,一般我们都给那个自增字段命名为ID。这样就可以返回刚插入的记录的ID值了。

id int(11) not null pri key auto_increment,name
varchar(12),backup varchar(50)
现在想插入一条记录的同时,返回他的id值(插入时只是插入name和backup字段的值)。请问该如何写这条语句。谢谢!

LAST_INSERT_ID() 自动返回最后一个INSERT或 UPDATE 查询中
AUTO_INCREMENT列设置的第一个表发生的值。

The ID that was generated is maintained in the server on a per-connection basis.

复制代码 代码如下:$query=”INSERT INTO
`testtable` VALUES “;mysql_query;$query=”SELECT
LAST_INSERT_ID()”;$result=mysql_query;$rows=mysql_fetch_row;echo
$rows[0];

你的担心完全多于。 不需要锁表, 返回的ID肯定是你的,基于当前连接session

MySQL 的LAST_INSERT_ID 的注意事项:

LAST_INSERT_ID是基于单个connection的, 不可能被其它的客户端连接改变。

这个函数是基于connection的,也就是不会被其他客户端的connection影响到,所以结果是准确的。如果使用select
max from table,在高密度的插入请求下,是有可能出问题的,返回错误值

自动返回最后一个INSERT或 UPDATE 问询为 AUTO_INCREMENT列设置的第一个
发生的值。

第一
、查询和插入所使用的Connection对象必须是同一个才可以,否则返回值是不可预料的。

 可以用 SELECT LAST_INSERT_ID(); 查询LAST_INSERT_ID的值.

LAST_INSERT_ID说明

mysql> SELECT LAST_INSERT_ID();

mysql> SELECT LAST_INSERT_ID();

Important: If you insert multiple rows
using a single INSERT statement, LAST_INSERT_ID() returns the value
generated for the first inserted
row only.

从名字可以看出,LAST_INSERT_ID即为最后插入的ID值,根据MySQL的官方手册说明,它有2种使用方法

        -> 195

        -> 100

使用单INSERT语句插入多条记录, 
LAST_INSERT_ID只返回插入的第一条记录产生的值. 比如

相关文章