思路:
用1个表保存流水号,取值时,锁表->取值->+1保存->释放锁

解决方案 »

  1.   

    是否是根据时间随机生成一个唯一的订单号?
      

  2.   


    建议楼主先尝试自己写一下,然后有任何问题可以把自己写的代码和问题一起贴出共同讨论。
      

  3.   

    select concat(DATE_FORMAT(CURDATE(),'%Y%m%d'),'0001') from dual  ;有两部分组成:  DATE_FORMAT(CURDATE(),'%Y%m%d') (年月日) +  '0001' (流水号) 如果使用存储过程生成 :
    需要先获取到数据库表中的最大的 订单号 ,判断 ,截取前8位 是否与 DATE_FORMAT(CURDATE(),'%Y%m%d')值相同 ,如果相同则直接转换为int 类型并对值加1 ,如果不相同,则直接使用  concat(DATE_FORMAT(CURDATE(),'%Y%m%d'),'0001')初始化 。个人建议 :直接使用 DATE_FORMAT(CURDATE(),'%Y%m%d') (年月日) +  4位随机数字 岂不是更简单 ?
    select concat(DATE_FORMAT(CURDATE(),'%Y%m%d'),ROUND(ROUND(RAND(),5)*10000)) from dual  ;