情况如下 我有两个表A 和B  两者是一对多的关系 级B里面有一个A的id,A的id是自增类型
现在我有A和B的两部分信息 ,希望同时保存A和B 然后在B当中存放A的id相当于 
insert into A values(xxxx)
 select A.id  from last update   //我如何来实现这一步?
 insert into B values(A.id,xxxx);
本来考虑select max(A.id) from A
但是如果在执行了insert into A 之后,select max(A.id) from A 之前又有insert into A的操作,那么逻辑上就出现问题要是能锁定整个表直到完成select max(A.id) from A 也能解决问题目前我用的是mysql 5 ,不知道能否处理? 或者其他数据库有此功能也可说明一下
整个功能类似hibernate的级联操作,但是必须要jdbc来操作。另外不知道是否可以使用transaction来实现锁表,请各位指教

解决方案 »

  1.   

    用Guid当主键,或者用@@Identity
      

  2.   

    to jiangsheng(蒋晟.Net[MVP]) 
    你说的情况是sqlserver吧?---------------------
    自己找了些解决方案 
    比如sql server的select @@Identity
    oracle 的return 语句都可以返回
    mysql 与sql2005 可以使用jdbc3的 statement来获取要是每个数据库都有支持jdbc3 的驱动就好了,可惜只是一个美好的梦
    -----------------------
      

  3.   

    sqlserver2000的话,应该使用select scope_identity()
    建议看看联机丛书,scope_identity()是当前连接任意表的上一个id,@@identity是全局任意表的上一个id,还有一个ident_current()是任意连接指定表的上一个id,用法是不同的。
      

  4.   

    然后再用CallableStatement调用存储过程