insert执行完以后执行查询:
select last_insert_id() as ID from TBL_NAME limit 1;
就可得到最新插入的序号,这个函数是线程独立的,不会受到其他用户插入操作的影响。

解决方案 »

  1.   

    在两台机器上测试了一下,好像真的可以哦。
    我在第一台插入一条数据后,执行你说的select last_insert_id() as ID from TBL_NAME limit 1;返回的数据是39。
    然后在另一台机器插入一条数据,执行你说的语句返回40,再转到第一台机器,返回的还是39,我想要的就是这个结果。
    不过不知道你说的这个方法与其他的数据库产品是否兼容,比如oracle,因为我的程序有可能还要在oracle运行。
    非常感谢你的帮助。
      

  2.   

    还可以在表里加一个varchar 的字段做主键,每次插入数据前先生成一个GUID,并保存.之后将其插入到主键列,最后以它做条件查询就不会出问题.在所有数据库上都没问题
      

  3.   

    oracle里没有自增,只能使用序列
    create sequence seq1;
    使用它来写id
    insert into table1(id) values(seq1.nextval);
    而后
    select seq1.currval from dual;获得刚才插入的序列值
    获取的值在事务内部是独立的,不受其他事务干扰