一般的做法是取数据表中的COMPANY_ID字段的最大值,加一作为新的ID
如果这个编号不会让用户看到,且无什么实际意义的话,建议你采用new Date().getTime()作为ID,但必须加上同步

解决方案 »

  1.   

    数据库是oracle的话,用数据库的sequence,如果是sql server,写一个触发器,
    对一个变量自动加1.
      

  2.   

    to  wangwenyou(王文友) :1、为什么建议用new Date().getTime()呢?和前一种比有何优点?或者说第一种有何不妥?2、同步什么意思?如何加??不好意思,我很菜:)
      

  3.   

    to nil2000(我爱北京天安门) :
    该触发器怎么写??详细点吧!
      

  4.   

    用Random()呀.
    long l=new Random.nextLong();
      

  5.   

    sequence:SQL> CREATE SEQUENCE s_dept_id
    2 INCREMENT BY 1
    3 START WITH 51
    4 MAXVALUE 9999999
    5 NOCACHE
    6 NOCYCLE;
    Sequence created.SQL> insert into s_dept(id,name,region_id)
     2   values      (s_dept_id.nextval,'finance',2);1 row created.
    至于你想自己制定id,可以用sequence的id和一个串来联合作为你的id。
      

  6.   

    to  wjfling(levin) :.nextLong()得到什么?由随机数产生,公司编号岂不是毫无规律,杂乱无章?会不会重复?
      

  7.   

    这样你会得到一个精确到毫秒级的当前时间值,是long型的,你可以把它作为ID;为了避免并发性问题的发生,你必须加上同步,同步的概念你可以看看Java书,它使用到方法上可以避免两个用户同时调用一个方法。