`

mysql-中如何获取下一条插入的自增ID 或 刚刚插入的id(转)

阅读更多

 

MySQL中如何获取下一条插入的自增ID 或 刚刚插入的id

 

原文地址:http://www.linuxidc.com/Linux/2011-05/36261.htm
要立刻获得刚插入记录的id,该表必须有一个为一个AUTO_INCREMENT列生成的ID
  1. $sql_addinfo = " insert into contact_info_group set contact_group_id='',contact_id='' " ;
  2. mysql_query ( $sql_addinfo ) ;
  3. echo mysql_insert_id () ;
mysql_insert_id – 取得上一步 INSERT 操作产生的 ID

int mysql_insert_id ( [resource link_identifier])
mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier,则使用上一个打开的连接。

如果上一查询没有产生 AUTO_INCREMENT 的值,则 mysql_insert_id() 返回 0。如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。

注: MySQL 中的 SQL 函数 LAST_INSERT_ID() 总是保存着最新产生的 AUTO_INCREMENT 值,并且不会在查询语句之间被重置。
警告

mysql_insert_id() 将 MySQL 内部的 C API 函数 mysql_insert_id() 的返回值转换成 long(PHP 中命名为 int)。如果 AUTO_INCREMENT 的列的类型是 BIGINT,则 mysql_insert_id() 返回的值将不正确。可以在 SQL 查询中用 MySQL 内部的 SQL 函数 LAST_INSERT_ID() 来替代。

具体使用如下语句:mysql_query(”SELECT LAST_INSERT_ID()”);

PS: 在插入数据时候可以这样写insert into xxx (col_a, col_b) values (11,22);select LAST_INSERT_ID()这样不就可以取到最近生成的ID了吗.

常 常需要在编程的时候获取当前表的下一个自增的ID值,因为表可能被删除之后造成最大的Max(ID) + 1并不是下一条ID的值,所以需要使用其他办法。通过查询Mysql的文档,会发现Mysql里面有一个函数叫做getLastInsertID,用来获 取最后插入的表的ID值,但是对获取下一条插入的自增ID并没有太多帮助。

1. 方法1
插入一条测试记录,然后删除掉,获取ID。不再赘述。

2. 方法2
利用Mysql自带的一个函数语句 "SHOW TABLE STATUS" ,可以获取当前数据库里的所有表的属性等信息,通常用来做数据库的优化和维护。如果需要指定某一张表的话,可以通过两种方法指定。
一种是网上给出来的:
show table status like 'TableName '
另外就是常见的where语句
show table status where Name =' TableName '

得到的结果集里面有一列AUTO_INCREMENT,是一个Int值变量,获取之后就是下一个要插入的ID了。

 

 

我这里用的:

 

  这里为insert的操作语句

 

 //-------------------cms mysql_insert_id()-----------------------------
    $result=$db->query("SELECT LAST_INSERT_ID() as id");
    $data=$db->fetchNextObject($result);
    $newid =$data->id;
 //-------------------cms mysql_insert_id()-----------------------------
分享到:
评论

相关推荐

    Go-beego框架自增id自写方法

    本文将详细讲解如何在Go和Beego框架中自写一个获取自增ID的方法。 首先,理解问题的核心:在循环中插入多条数据时,我们通常希望在每条数据插入后能够获取到其对应的自增ID。在大多数数据库系统中,自增ID是由...

    mysql的插入问题 怎么获得自动增长的ID

    在插入17条记录后,删除了ID为15、16和17的记录,然后重启MySQL服务,再插入一条新的记录。 - **MyISAM**:由于MyISAM使用独立的文件存储自动增长的ID值,即使在删除了一些记录并重启MySQL服务后,新的记录ID也会...

    Java获取最后插入MySQL记录的自增ID值的3种方法

    在Java编程中,当我们在MySQL数据库中执行插入操作并希望获取新插入记录的自增ID时,有多种方法可以实现这一需求。以下是三种常见的方法,适用于不同的场景。 **方法一:使用PreparedStatement的RETURN_GENERATED_...

    jdbc 插入记录并返回自增主键值

    由于我们只插入了一条记录,所以`ResultSet`通常只有一个行,可以通过`rs.getInt(1)`获取第一列(也是唯一一列)的主键值。 注意,这个过程只适用于那些在插入时能立即返回自增主键的数据库系统,比如MySQL。在某些...

    java快速ID自增器

    自增ID通常用于数据库中的主键字段,确保每条记录都有一个唯一的标识符。在传统的SQL数据库如MySQL中,可以设置特定字段为自动增长(AUTO_INCREMENT),每次插入新记录时,该字段的值会自动递增。然而,这种机制在...

    mysql自增id超大问题的排查与解决

    MySQL中的自增ID是表设计中的一个重要元素,特别是在需要唯一标识每条记录的场景下。然而,当自增ID超出其定义的最大值时,就会出现所谓的“超大问题”。这个问题通常发生在频繁进行删除和插入操作的表上,尤其是在...

    ASP技术常遇问题解答-如何得到插入一条记录后最新的ID?.zip

    在ASP技术中,开发人员经常遇到的一个问题是:在成功插入一条数据库记录后,如何获取新生成的自动递增ID(通常为主键)。这个ID在许多业务逻辑中扮演着关键角色,例如关联其他数据或作为唯一标识。在ASP.NET后端开发...

    mysql 数据库自增id 的总结.docx

    在MySQL数据库中,自增ID(Auto Increment)是一种常见的特性,用于在插入新记录时自动为指定列(通常是主键)生成唯一的递增数值。在标题提到的文档中,主要讨论了如何使用自增ID以及与之相关的INSERT和REPLACE语句...

    利用Java的MyBatis框架获取MySQL中插入记录时的自增主键

    在这个例子中,`select LAST_INSERT_ID()` 是一个MySQL函数,用于获取最后一条插入语句产生的自增主键值。`<selectKey>`标签会先执行,然后插入操作才会进行,确保了获取的是正确的新生成的ID。 总结起来,通过在...

    MySQL自增ID耗尽实例讲解

    MySQL中的自增ID是表中自动递增的主键字段,通常用于唯一标识表中的每一条记录。在MySQL中,自增ID默认的数据类型是INT,其最大值为`2^32-1`,即4,294,967,295。当超过这个上限时,尝试插入新的记录会导致自增ID不再...

    java获取新insert数据自增id的实现方法

    Java获取新insert数据自增id的实现方法主要介绍了在Java中获取新insert数据自增id的实现方法。该方法在实际应用中非常重要,因其可以对主从表结构的设计产生重要影响。 在具体生成id的时候,我们的操作顺序一般是:...

    mysql取得自动增长的主键值

    - **示例代码:** 下面的Java示例展示了如何使用JDBC API来插入一条记录并获取自增ID。 ```java try { getConnect gc = new getConnect(); Connection conn = gc.getconn(); Statement stmt = conn....

    关于MySQL自增ID的一些小问题总结

    MySQL中的自增ID是数据库设计中常见的特性,用于为每条新插入的记录生成一个唯一的标识符。在InnoDB存储引擎下,自增ID的行为有特定的规则,这里我们将详细探讨几个关键点。 1. **ID的最大记录删除后的自增行为**:...

    PHP获取MySql新增记录ID值的3种方法

    `mysql_insert_id()`是PHP提供的一个非常方便的函数,用于获取最后一条插入记录的自增ID。它的使用方法如下: ```php // 执行插入数据库的语句... $getID = mysql_insert_id(); // $getID即为最后一条记录的ID ...

    mysql雪花算法生成唯一整型ID主键的实现方法

    为了初始化序列,我们可以插入一条记录到`sequence`表,并调用`setval`函数设置初始值。例如,这里使用了一个19位的UUID_SHORT()生成的数值,加上特定前缀"1987",使其与雪花算法的长度和格式保持一致: ```sql ...

    得到自增列的下一个会插入的id

    - 在MySQL中,类似的功能可以通过`LAST_INSERT_ID()`函数获取最后插入的自增ID,而`ALTER TABLE ... AUTO_INCREMENT = value`则可以修改自增列的初始值。 了解这些概念后,您可以根据业务需求有效地管理和利用自增...

    Mysql面试题主键自增

    主键是关系数据库中用来唯一标识一条记录的字段,它的主要功能包括: 1. 唯一性:确保表中的每一行都能被唯一地识别。 2. 非空性:主键字段不能有NULL值。 3. 完整性:通过主键可以确保数据的完整性,避免重复数据。...

    MySQL的自增ID(主键) 用完了的解决方法

    在MySQL数据库中,自增ID(通常作为主键)是一个重要的特性,用于唯一标识每条记录。当自增ID用完,即达到其定义的最大值时,需要采取一些策略来解决这个问题,以确保数据的正常插入和系统的稳定运行。以下是一些...

    mysql面试题-mysql面试题

    - 当一个表中包含自增主键,并且在插入17条记录后删除了第15、16、17条记录,然后重启MySQL,再插入一条记录时,自增ID的生成取决于所使用的存储引擎。 - 对于MyISAM引擎,它将自增主键的最大ID写入数据文件,即使...

    Oracle中主键自增实例

    在Oracle数据库系统中,主键(Primary Key)是表中的一个或一组字段,它们的值在整张表中是唯一的,用于唯一标识每一条记录。然而,与MySQL等其他数据库不同,Oracle并没有内置的自动递增(auto-increment)功能来...

Global site tag (gtag.js) - Google Analytics