访问mysql中最后插入的行

Posted

技术标签:

【中文标题】访问mysql中最后插入的行【英文标题】:Accessing last inserted row in mysql 【发布时间】:2012-09-26 11:18:58 【问题描述】:

在我的数据库服务器上,我正在将数据插入到具有自动增量字段的表中,例如“id”。现在我想在后续步骤中使用最后插入的“id”的值。我可以用这个:-

  select * from table_name order by id desc limit 1; 

但这里的问题是,它是一个服务器,并且可能会发生更多插入,并且可能存在我尝试使用我提到的查询检索数据并获得不同 id 的情况,即。在我的插入和选择之间可能有一些其他插入,我不会得到我插入的值。有什么办法可以解决这个问题?

提前致谢。

【问题讨论】:

看起来很简单:dev.mysql.com/doc/refman/5.0/en/mysql-insert-id.html 根据您连接到数据库的方式,您的库可能会开箱即用地实现此功能,但底层 mysql 引擎肯定能够提供此干杯。跨度> 【参考方案1】:

使用这个

mysql_insert_id(&mysql);  

因为它的基本结构是

mysql_insert_id ([ resource $link_identifier = NULL ] )

检索前一个查询(通常是 INSERT)为 AUTO_INCREMENT 列生成的 ID。

或者在mysql中使用

   SELECT LAST_INSERT_ID();

这里是参考链接

http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

http://php.net/manual/en/function.mysql-insert-id.php

【讨论】:

我可以在插入查询中直接使用`SELECT LAST_INSERT_ID()`吗? @Irfan 你的意思是直接插入查询?解释你想要什么?【参考方案2】:

插入后立即调用LAST_INSERT_ID()函数并将id保存在某处。

【讨论】:

【参考方案3】:

试试这个

SELECT LAST_INSERT_ID(colid) From tablename;

这是Link

【讨论】:

【参考方案4】:

使用这个mysql_insert_id()

它返回前一个 INSERT 操作生成的 AUTO_INCREMENT ID。

如果之前的操作没有生成 AUTO_INCREMENT ID,则该函数返回 0,或者在 MySQL 连接失败时返回 FALSE。

【讨论】:

【参考方案5】:

插入后立即调用LAST_INSERT_ID()函数就可以得到id,然后就可以使用了。

【讨论】:

【参考方案6】:

对于任何最后插入的记录都将通过 mysql_insert_id() 如果您的表包含任何 AUTO_INCREMENT 列,它将返回该值。

mysql_query("INSERT INTO test(emsg,etime) values ('inserted',now())");
printf("Last inserted record has id %d\n", mysql_insert_id());
$last_id=mysql_insert_id();
echo $last_id;
?>

【讨论】:

以上是关于访问mysql中最后插入的行的主要内容,如果未能解决你的问题,请参考以下文章

无法选择最后插入的 id 为 [Mysql, php pdo oop] [重复] 的行

MySQL - 选择最后插入的行最简单的方法

MySQL 触发器更新最后插入的行

之前:获取最后插入的 id - mysql 现在:我们应该在哪里调用最后插入的 id?

MySQL 在查询 IS NULL 时返回最后插入

MySql 选择日期相差 30 分钟的行