你的代码我没有仔细看(我最烦的就是看别人的代码了)可能的原因:
1。你的设计中(表中)缺乏那种安全的校验,对于结果来说已经不重要了
2。就你的过程来说,有可能是两个人在不同的地方同时获取,但先后提交(insert)

解决方案 »

  1.   

    从表userfillcard取最大的数字生成卡号时.则需要往userfillcard插入数据后,才能重新生成另外的卡号.否则每次都一样.
      

  2.   

    不妨作个假设:假定有两个如下事务一前一后执行:
    ----------------------------------------------------------
    BEGIN TRAN
    ....                              --定单号
    ....                              --密码
    set @cardaccount=dbo.F_CSCS_GetAccount(@cardid) --调用
    COMMIT TRAN
    ----------------------------------------------------------先执行的事务为A,后执行的事务为B在事务A执行完 set @cardaccount=dbo.F_CSCS_GetAccount(@cardid) 语句之后,并且执行COMMIT TRAN之前事务B也执行到了 set @cardaccount=dbo.F_CSCS_GetAccount(@cardid) 语句
      

  3.   

    TO:libin_ftsafe(子陌红尘) 
    我后来就是想了这个假设,和你的意思一样,那怎么解决这个问题,不是必然
    但有可能发生!但是几率又不大,至少对我们来说!