有 一张数据库表,ID 是数据库自动生成的(increment), 我往这个表里插入了一条记录,这条记录除了ID不同其他的都可能相同,我怎么得到刚插入的那条记录的ID?        我 想 加锁  用select max(id) 不知道能不能行? 有知道的帮下,谢了!

解决方案 »

  1.   

    select * from 表 order by desc
      

  2.   


    select * from 表 order by id desc
      

  3.   

    LZ的思路不错,不过在生产环境下应该会影响系统的响应性能(其他用户对那张表操作时就需要等待)的吧?
    不知道在数据库设计时添加一个时间字段,精确到毫秒,在程序中结合触发器返回已插入的记录的ID行的通不?
      

  4.   

    SELECT top 1 ID FROM表 WHERE 若干条件 order by ID DESC这样即使条件有重复,也能找出最新的那条记录的ID
      

  5.   

    不建议用max()函数,如果你的用户访问量大的话,同时一个时间很多插入操作的话,你怎么能判断最大的就是最刚才你所要得到的记录呢?
    最好的做法是你先生成id,再插入。做法是:
    你写个方法,从序列中得到下一个值,
    public int getId(){
      int id=0;
       sql="select sequence.nextval from dual"
    //这里操作得到值,然后返回得到的id
      return id;
    }最后把这个id插入你要的插的记录。这种做好是比较正确的。