一、确定需求
只要做过开发的基本上都有做过订单,只要做过订单的基本上都要涉及生成订单号,可能项目订单号生成规则都不一样,但是大多数规则都是连续增长。
所以假如给你一个这样的需求,在高并发下,以天为单位,生成连续不重复的订单号,比如2017年4月12日有1000条订单,那么当天的订单号是170412001至1704121000,第二天13号又有2000条订单就是170413001至1704132000。
二、实现需求
首先我们建立一个订单表
CREATE TABLE [dbo].[tbOrder]([ID] [int] IDENTITY(1,1) NOT NULL,[OrderNo] [varchar](50) NULL,[InputTime] [datetime] NULL,CONSTRAINT [PK_tbOrder] PRIMARY KEY CLUSTERED([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY])ON [PRIMARY]
GO
表中只有自增ID,订单编号,录入时间三列。
然后开始在代码里面生成订单号。
1 public static stringGetOrderNo()2 {3 string result = string.Empty;4 using (IDbConnection conn =SqlHelper.OpenConnection())5 {6 string sql = "SELECT ISNULL(COUNT(*),0)+1 FROM tbOrder