怎么预知mysql下一次插入的自动递增id值?

解决方案 »

  1.   

    无法预知!你可以通过 select max(id) 得到,但显然在并发情况下这个并不准确。
      

  2.   

    什么原因需要预测啊你可以插入之后用last_insert_id函数来取得插入的id
      

  3.   

    这是无法预知的。但可以得到最后插入的记录ID的。
    last_insert_id
      

  4.   

    好像 last_insert_id 需要在同一个connection 里才能获取到吧?
    否则会获取0、
      

  5.   

    个人见解:select max(id)  并发会不准确 
    last_insert_id  你在删除的时候获取不到last_insert_id的值的、只有当你插入后马上获取该函数才能正确获取到值
    引用楼主问题:“这时候如果插入新纪录,.....”那么  last_insert_id   适合你  可以写在存储过程里、返回该插入的数据的id值就可以了、
      

  6.   

    找到方法了SELECT t.`AUTO_INCREMENT` FROM information_schema.`TABLES` t WHERE   t.`TABLE_NAME`='table'
      

  7.   

    对,information_schema里面保存了这个值,另外在show create table中也有:
    Create Table: CREATE TABLE `mysql_instance` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
      `gmt_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
    )ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=ascii
    自增值是不断增大的,不会因为中间有空洞而缩减。但是,你如果重启了mysql,mysql会获得max(id)来作为表的下一个AUTO_INCREMENT值。