生成每天重置的票号的最佳方法

Best way to generate ticket number that resets daily

所以我正在制作一个票务管理系统,客户会在其中 he/she 分配一个票号。 我想保持简单,并希望生成一个 4 或 5 位的票号,例如:

00001
00002
00003

这将每天重置,即今天可能会为一位客户分配 00005 号票,明天可能会为另一位客户分配该号码(因为票每天都会过期) 一种方法是从我读取最后一个数字的地方开始计数 table,然后在其中加一个以生成下一个数字。但是如果两个或更多人同时来,这会导致一些并发问题!?
所以我在想我是否可以为此目的使用 SQL 服务器标识列,因为它会负责生成序列号。问题是它不会在第二天重置,它会继续增加,所以最终它会变成一个非常大的数字。

最好的方法是什么?

创建一个具有单个整数列的 table,并在您的票证创建存储过程中将该列的递增包装在一个事务中。当您想要重置计数时,将整数值重置为 0。如下所示:

-- table to hole the next ticket number

    CREATE TABLE [dbo].[ticketNumber](
        [nextTicket] [int] NOT NULL
    ) ON [PRIMARY]
    
    INSERT INTO [dbo].[ticketNumber] VALUES (0)

然后存储过程使用 table 包装在事务中:

begin tran

declare @nextTicket int
update ticketNumber set @nextTicket=nextTicket=nextTicket+1
--do you other sql here

commit

您可以在数据库中创建 2 列 table、DataTimeUnixTime,然后 unixtime 是增量的。

然后创建一个存储过程来为当天的所有记录设置每天的票数。

每次请求获取票号后,您​​可以生成所有票号

我想到的最合适的 SQL 服务器功能是 Sequence

可以用ALTER SEQUENCE (Transact-SQL)重置。