想在插入记录是同时获得自增主键的主键值。想知道具体怎么操作。网上找了很久也没有答案。
数据库是DB2。

解决方案 »

  1.   


    比如某表有两个字段id ,name
    其中id是自增主键。
    插入数据时sql语句直接写 insert into table (name) values('XXX');
    id的值直接由数据库自增获得。另外还有一种方式是通过sequence的方式:
    insert into table(id,name) values(next value for test,"testName");               其中test是sequence名这两种插入记录的方式在执行时是不知道主键值的。所以我希望有办法在执行语句时能够获得这个值。
    一是实现方法不知道。二是代码怎么写也不知道。
      

  2.   

    插入完了不就知道了吗?序列也有current值属性,这个能取到吧,加上增长值就是insert的主键值。
    关键是,我不理解你要干什么。你把你想实现的功能说出来,或许我们可以帮你想想如何解决。
      

  3.   


    现在的情形是有张表,字段是
    id(主键)     username       LoginTime               LogoutTime              用途是当某个用户进行登录操作之后在表中创建一条记录,记录下用户名和登录时间
    当这个用户退出时,在同一条记录中update上退出时间。检索条件就是id
    这样为了能够定位到这条记录我需要获得id值。
      

  4.   

    你这样说,就明白多了。
    update后,select id from table order by id desc,这样得到的第一个id就是刚才插入的id。当然,也可按logintime排序。当然,如果主键是用序列实现的,则可以得到序列当前值,既是插入的id。当然,也可select中max(id)。
      

  5.   

    sequence的方法我就不多说了jdbc的方式
    PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);  pstmt.executeUpdate();  //检索由于执行此 Statement 对象而创建的所有自动生成的键  ResultSet rs = pstmt.getGeneratedKeys();  if (rs.next()) {  //知其仅有一列,故获取第一列  Long id = rs.getLong(1);  System.out.println("------id = " + id);  }
      

  6.   

    我觉得不应该从获得记录id入手,要从你用户退出登录的时候,对于这个表还有什么信息(比如用户名,或者用户Id),从这些信息入手进行update退出时间,最好再加一个是否退出标识的字段,用于判断用户是否退出
      

  7.   

    建一个GUID字段做为主键,通过主键GUID是客户端生成的,通过主键查询自增序列字段。
      

  8.   

    建一个GUID字段做为主键,主键GUID是插入的时候客户端生成的,插入后通过主键查询自增序列字段。