`

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()-----------------------------
分享到:
评论

相关推荐

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

    一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 还是MYSQL的,一张表有还是有ID自增主键,用JDBC insert一条语句之内,怎么在JAVA...

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

    小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败,balabala……” ...

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

    使用此方法得到的是 id最大的值,确为最后一个值,但当多链接线程时,这个最大的id并不一定是我们插入数据的自增id值,因此不适用于多线程。 二,使用函数:msyql_insert_id(); 在PHP中,经常需要把插入数据库中的id...

    MySQL分表自增ID问题的解决方法

    当我们对MySQL进行分表操作后,将不能依赖MySQL的自动增量来产生唯一ID了,因为数据已经分散到多个表中。... 对于插入也就是insert操作,首先就是获取唯一的id了,就需要一个表来专门创建id,插入一条记录,并获取最

    MySQL自增主键删除后重复问题

    这是我同事的一个朋友遇到的问题,标题可能有些拗口,我重现下场景...但是,如果我们在删除了ID为100的纪录,但是没有重新启动服务器的条件下,再新增一条新纪录,新纪录的自增ID都为101。  为什么会出现这种现象?

    如何在Hive、MySQL、Oracle中分别添加自增序号

    最近公司业务涉及到了在相应库中添加自增序号这种操作,闲暇之余,整理如下,仅供参考~ ... 2、向测试表中插入几条数据 insert into table xzw values (1,'row1'),(1,'row2'),(1,'row3');  3、使用row_n

    解决Hibernate JPA中insert插入数据后自动执行select last_insert_id()

    在插入数据后SQL执行日志中会多出一条select语句: 代码如下:Hibernate: insert into click_statstic (logDate, memoId, src, typeId) values (?, ?, ?, ?)Hibernate: select last_insert_id()表中有个主键是自增列...

    mysql数据库的基本操作语法

    foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束...

    mysql中replace into的用法详解

    replace into语句会根据唯一键/主键删除原有的一条记录, 并且插入一条新的记录来替换原记录。如果没有表不存在唯一键/主键 或者 插入的数据唯一键/主键没有重复的,那么会新增一条记录。 新建一个test表,三个字段...

    Java事务总结.docx

    Java事务总结

    mysql储存相关的面试题目精选

    存储引擎 1、有哪些常见的存储引擎? 2、MyISAM 和 InnoDB 的区别?3、InnoDB 的四大特性? 插入缓冲insert buffer) ...用来描述数据页中的具体信息,比如存在多少条纪录,第一条纪录的位置等。 6.页中插入记录的过程?

    php生成唯一数字id的方法汇总

    那就给MySQL数据库中的表的id一个AUTO_INCREMENT(自增)属性,每次插入一条数据时,id自动+1,然后使用mysql_insert_id()或LAST_INSERT_ID()返回这个自增后的id。 当然,这个问题已经有现成的解决方法了,使用...

    java大厂200+面试题总结(附答案)

    一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几? 如何获取当前数据库版本? 说一下 ACID 是什么? char 和 varchar 的区别是什么? float 和 double...

    MySQLDBA运维笔记.pdf

    属主和用户组为 mysql 或 root......................................................................................21 1.3.4 删除默认存在的 test 库 .........................................................

    乐优商城.xmind

    自己做的乐优商城的XMIND文件,学习分享下。乐优商城 搭建父工程 pom.xml 添加依赖 springCloud mybatis启动器 通用Mapper启动器 mysql驱动 分页助手启动器 FastDFS客户端 其他配置 构建设置 环境设置 ...

    SQL培训第一期

    //获取下一个 select seq_student_uuid.currval from dual; //获取当前 2.1.3 批量插入 2.1.3.1 查询结果批量插入 insert into tablea(cola,colb) select cola,colb from tableb; 2.1.3.2 创建相同的表结构并插入...

    Java常见面试题208道.docx

    165.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几? 166.如何获取当前数据库版本? 167.说一下 ACID 是什么? 168.char 和 varchar 的区别是什么? 169...

    基于FMDB数据库操作类PYFMDB.zip

    //取第一页,每页10条按条件查询数据,指定字段,设置分页,设置排序,返回结果为NSArray 排序中 desc 代表 降序,asc代表升序 单个字段排序 如 id desc 多个字段排序 如 id,wheel ascNSString *where = @"name='...

Global site tag (gtag.js) - Google Analytics