簡體   English   中英

在線系統的唯一增量編號

[英]unique incremental number for online system

我們的客戶希望我們開發基於Web的發票系統。 生成的發票號將是遞增的,例如INV001,INV002,INV003等。此發票號將在用戶每次請求后即時生成。

我們面臨的問題是,如何為每個用戶生成一個完全唯一的增量數字? 可能有100個用戶同時訪問該網站並索要發票。

關於使用數據庫增量編號解決方案的建議,這是我的情況:

客戶端同時組織許多事件,對於每個事件,發票號應從1開始,並以1遞增1。該表將保存來自各種事件的大量數據,因此顯然我不能依靠增量數字列。 這是表的外觀示例(列ID為增量列):

id | eventName  | guestName 
1  | run for it | john doe
2  | run again  | jane doe
3  | run again  | the rock
4  | run for it | miow
5  | run again  | hohoho

因此對於上述情況,如何為事件“為其運行”生成發票號INV001,INV002,為事件“再次運行”生成發票號INV001,INV002,INV003?

謝謝

將活動與客人分開。 有一個包含事件ID和事件名稱的事件表,以及一個包含事件ID,訪客詳細信息和訪客ID(增量編號)的來賓表。 這樣,您可以將訪客ID用作發票編號的基礎(您仍需要對其進行格式化以獲取INV001,INV002等)。 這是一個例子:

TblEvents
---------
Event Id (int, incremental)
Event Name (string)

TblEventGuests
---------
Event Guest Id (int, incremental) -- This will be the base for your invoice number.
Event Id (int, FK to events) 
Guest Name (string)

更新

您可以使用ROW_NUMBER函數獲取所需的結果:

SELECT EventGuest_Id, Event_Id, ROW_NUMBER() OVER 
(PARTITION BY Event_Id ORDER BY EventGuest_Id) AS InvoiceNumberBase
FROM TblEventGuests
ORDER BY Event_Id, InvoiceNumberBase

下次,請盡量不要簡化這個問題。 如果您的問題更加准確,我相信您會早日得到答案。

在此sql小提琴中自己嘗試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM