mysql得到的last_insert_id()是在AUTO_INCREMENT字段上插入后的返回值,如果没有在AUTO_INCREMENT作过插入,结果是不会改变的
这样是可以的:
CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT ,PRIMARY KEY (a));
insert into test1 values ();
select last_insert_id() as id from user limit 1 ;结果为1
insert into test1 values ();
select last_insert_id() as id from user limit 1 ;结果为2
...

解决方案 »

  1.   

    +---------------+--------------+------+-----+---------+----------------+
    | Field         | Type         | Null | Key | Default | Extra          |
    +---------------+--------------+------+-----+---------+----------------+
    | id            | int(8)       | NO   | PRI | NULL    | auto_increment |
    | username      | varchar(100) | NO   | UNI |         |                |
    | password      | varchar(100) | NO   |     |         |                |
    | nickname      | varchar(100) | NO   |     |         |                |
    | registertime  | datetime     | YES  |     | NULL    |                |
    | lastlogintime | datetime     | YES  |     | NULL    |                |
    | valid         | char(1)      | NO   |     | y       |                |
    +---------------+--------------+------+-----+---------+----------------+我想mysql表因该是没有问题的,估计还是xml文件或java文件里的错误
      

  2.   

    另外 last_insert_id(),只对当前session有效
    你在一个session中insert了一次,当然返回只能为1了
    你可以用
    select max(id) id form user来得到最后插的ID
      

  3.   

    sorry,我的 int id = getSqlMapClientTemplate().update("addUser",user);
    这里用的是update,改为insert就好了