hsql
insert into table1(id,name) values(null,'abc');
insert into table2(pid,detail) values(identity(),'handsome');mssql
insert into table1(id,name) values(null,'abc');
insert into table2(pid,detail) values(@@identity,'handsome');

解决方案 »

  1.   

    你可以专门用一个表保存其它表中用到的ID.专门写一个类从这个表中获取.
    例:表:xt_talbe_id字段: table_name  //表名,用ID的表.
          c_id        //table_name中当前的ID,也就是你刚插进去的ID
          next_id     //table_name中要用到的下一个ID.  这只是个思路.现在我们就用这种方式做项目.
     供LZ参考.
      

  2.   

    谢谢楼上二位Netself() :你的这个表取得一个id号之后马上就要改写next_id吧,也就是说取出了就永远也不会被再用了,如果业务出现回滚那么那个取得的id就永远都不会被使用,这样才能保证其他线程后续取号的时候不会取得相同的id,你没有说清楚是不是要马上更改这个id,我想确认一下是不是就是我说的这个过程?
      

  3.   

    c_id 和next_id 在每次取完后都要更新.让c_id=next_id
      next_id=next_id+1;
      

  4.   

    dreamover(梦醒了〖http://hellfire.cn〗) :你说的方法是错误的,应该用SCOPE_IDENTITY()用@@IDENTITY是有危险的,具体原因看下面两个连接:
    http://blog.joycode.com/ghj/archive/2004/03/21/16745.aspx
    http://brooks.cnblogs.com/archive/2006/04/24/383391.aspx谢谢Netself() 的回答,结贴