create table的时候id主键是自增的
当对该表进行多次删除与插入数据的时候id会出现不连续的情况那么当我把表delete from table的时候如何获得当前的id值

解决方案 »

  1.   

    innodb 引擎这个值是保存在内存里的,下次重新启动时,会对表取max来取得该自增值的。
    myisam引擎,这个值是保存在表定义文件里的,所以,每次重新启动都是从表定义文件里面取。清楚这2种本质的情况,相信你就知道你的上面所说的值应该怎么取了。
      

  2.   

    IDENT_CURRENT 类似于 Microsoft® SQL Server™ 2000 标识函数 SCOPE_IDENTITY 和 @@IDENTITY。这三个函数都返回最后生成的标识值。但是,它们在定义"最后"的作用域和会话上不同。 IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
    @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
    SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
      

  3.   

    show table status where Name ='TableName'结果集里列名为AUTO_INCREMENT的值
      

  4.   

    delete的话,用触发器能得到ID,其他的方法不知道。
      

  5.   

    create table tb(id int(5) unsigned not null auto_increment,
    name varchar(60) not null,
    primary key(id)
    )
    default char set=utf8
    engine=InnoDB;
    insert into  tb values(null,"afd");
    insert into  tb values(null,"afdsa");
    insert into  tb values(null,"afdsa");
    insert into  tb values(null,"afdsa");
    select * from tb;
    delete from tb where id<3;
    insert into  tb values(null,"afdsa");
    insert into  tb values(null,"afdsa");
    delete from tb;
    insert into  tb values(null,"afdsa");
    类似这种情况这个最后插入数据的ID怎么获得?请继续帮忙把sql语句写出来
      

  6.   

    CREATE TABLE animals (
        grp ENUM('fish','mammal','bird') NOT NULL,
        id MEDIUMINT NOT NULL AUTO_INCREMENT,
        name CHAR(30) NOT NULL,
        PRIMARY KEY (grp,id)
    ) ENGINE=MyISAM;INSERT INTO animals (grp,name) VALUES
        ('mammal','dog'),('mammal','cat'),
        ('bird','penguin'),('fish','lax'),('mammal','whale'),
        ('bird','ostrich');
    INSERT INTO animals (grp,name) VALUES
        ('mammal','dog'),('mammal','cat'),
        ('bird','penguin'),('fish','lax'),('mammal','whale'),
        ('bird','ostrich');
    INSERT INTO animals (grp,name) VALUES
        ('mammal','dog'),('mammal','cat'),
        ('bird','penguin'),('fish','lax'),('mammal','whale'),
        ('bird','ostrich');SELECT * FROM animals ;select last_insert_id();
    你说这个是多少?
      

  7.   

    这里的last_insert_id()就是插入('mammal','dog')这个值时的ID值,而非('bird','ostrich')插入时的值。
    因为对于多行插入,last_insert_id()返回的是第一个插入记录的auto_increment的值。
      

  8.   

    show table status where Name='cv_basic';怎么从这个得出的结果集获取auto_increment 字段?
      

  9.   

    show table status where Name='cv_basic'; 怎么从这个得出的结果集获取auto_increment 字段? 
      

  10.   

    show table status where Name='cv_basic'; 怎么从这个得出的结果集获取auto_increment 字段? 
      

  11.   

    其实就这样:select auto_increment from information_schema.tables where table_schema='库名' and table_name='表名'
      

  12.   

    谢谢诶 wsh 终于解决了!