是这样的:假如这个人的编号是7201018,我在新增下一条记录的时候就应该是7201019或者随机产生一个也可以,请教!

解决方案 »

  1.   

    select Max(card_no) + 1 as card_no
    from tbl_Staff
      

  2.   

    或是在txt文件中保存编号:每次操作来读取这个文件,并修改它。
      

  3.   

    http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
      

  4.   

    这个问题我觉得 yuanscar(塑料树) ( ) 的也不对。存在如下的问题:
    用户点击增加按钮的时候产生一个番号,并把表+1了,但是并没有保存,结果下次再做得时候这个号就没了,产生了断号。我的解决的方法是写两个函数,一个是getvalue,一个是setvalue,读的时候得到,而且再setvalue的时候还必须放在一个事务里面完成,这样才不会断号
      

  5.   

    我遇到了同样的问题,没有太好的解决办法,有时出现了断号,abcde52511(木心)的方法很好,不过,能告诉你的函数是怎么写的吗?
      

  6.   

    多用户环境下要不断号并没有什么特别的好办法, 那是以牺牲性能来达到的, 就是将所有用户的数据库操作请求全部串行执行,而且必须等第一个用户完全更新完毕后才能执行下一个用户的请求, 否则很难达到要求. 即使各个大型数据库(比如sql server)的自增字段也不能做到不断号.
      

  7.   


    只要你不要连续的,随机产生一个就可以!
    如:专门建一表保存最大号!  在每次FORMCREATE时都产生的号(在原来的上面+1),并替换到表里,那么每次就是多人操作时,FORMCREATE的时间不一样,好就不会重复,唯一的问题是在你人员编号的数据表里7201018过后可能不是7201019,可能7201021或是7201023
      

  8.   

    怎么这么麻烦。如果是oracle的话直接建立个序列就成了,其他数据库也可以模仿这种方案写个存储过程啊
      

  9.   

    SQL和oracle数据库里 可以加个序列 单号就用这个序列号就可以了
      

  10.   

    如果不要什么规律的话,可以用随机函数rand()产生一个数就可以了,不过,要初始,以便产生不一样的数.
      

  11.   

    多用户的情况按照 holylts(不要相信)那么做要等死了,这不是误人子弟吗
      

  12.   

    select top 1 * from table order by id desc
      

  13.   

    wtg476(起飞) ,你说的答案好像在一早就已经被否决了,原因不就是多用户情况下不能控制吗?
    这个问题其实已经很明显了,程序控制的时候总会出现问题。如果既不产生冲突,又没有断号的问题,就只能用数据库来控制,不管是自动编号,还是触发器,还是存储过程都可以。
    其实推荐用触发器来控制,这样不会对原来的程序有特别大的影响,而且没有特别大的副作用。
      

  14.   

    我觉得自增字段应该在DATABASE服务器一端做,你的应用中没有必要管这个编号.