求一个,能生成唯一订单编号的算法,最好不超过10位,纯数字更好。想过用把GUID转成短点的,不过一直没想到好的算法,各位大虾给点意见,能类似于淘宝订单那中编号最好了,不长不短全是数字。

解决方案 »

  1.   

    有一种比较土但是也比较常用的办法:
    创建一个订单号临时表 TempOrder(有一个ID自增列,有一个GUID列)
    最终订单号,一般是yyyyMMdd当日订单序号
    1)insert TempOrder
    2)select * from TempOrder
    where Guid = guid
    3)delete from TempOrder
    where Guid = guid
    如果是SQL SERVER,则上面三条语句可以在一个command中一次执行完毕。注意三条语句尽量不要与业务事务一起执行,避免因此引起并发操作瓶颈
      

  2.   

    1)insert TempOrder
    2)select * from TempOrder
    where Guid = guid
    3)delete from TempOrder
    where Guid = guid
      

  3.   

    这个问题对于B/S或三层架构的C/S系统都不是问题,但对于两层的C/S来说就比较难。
      

  4.   

    你用Random函数实现就可以了,前面按日期+四位的随机数。
      

  5.   

    datetime。now.tostring("yyyyMMddhhmmss")