我用Jsp写一个论坛,数据库用的是MySql,当我用Insert语句发一个新的帖子,如何能返回这条记录的id(id是int自增)?因为我想直接把页面转到该帖。开始我使用帖子标题做条件查询,但是如果遇到同名的帖子就乱了,加上发布时间等其他条件感觉也不保险,重要的是insert完再要select一次感觉很烦。是否有办法在insert的同时就获得新数据的id,而不用再select?请大家讲讲自己是如何解决这个问题的

解决方案 »

  1.   

    你的mysql如果支持事务的话,就用事务
    如果不支持的话,就只能再查一次了
      

  2.   

    funcreal(为中华之崛起而编程)非常感谢!
    你所提到的‘事务’我基本明白,但是‘表锁’的感念比较模糊,使用什么样的隔离级别,如何实现在一个事务中的隔离?
    请尽量讲详细点,再谢!
      

  3.   

    bluelily22(丁丁)我查的资料中说MySql不支持事务处理:5.4.3 事务处理
    不支持事务处理。MySQL将在短时间内支持原子(atomic)操作,它象没有回卷的事务。用原子操作,你能执行一组INSERT/SELECT/whatever 命令并且保证没有其他线程介入。在本文中,你通常不会需要回卷。目前,你可通过使用LOCK TABLES和UNLOCK TABLES命令阻止其他线程的干扰。
      

  4.   

    把MySQL库的表类型更改为InnoDB就可以支持事务处理了,好象4以下的低版本不支持事务。
    ALTER TABLE name TYPE = InnoDB;只有再次select数据库来找出自己刚刚发布的帖子,用发帖人作为条件检索,并找出最大的ID,这就肯定是你刚刚发布的帖子了:
    select max(id) as maxId from data where userName='myName';