多個終端機同時請求取號,需保證號碼唯一、順序、無重複。
利用數據庫 行級鎖 + 事務 保證原子性,無需應用層複雜鎖或網絡協議。
// 存儲過程或 EF 事務
BEGIN TRAN
UPDATE TicketCounter SET CurrentNo = CurrentNo + 1 WHERE Id = @CounterId;
SELECT @NewNo = CurrentNo FROM TicketCounter WHERE Id = @CounterId;
INSERT INTO TicketLog (CounterId, TicketNo, CreateTime) VALUES (@CounterId, @NewNo, GETDATE());
COMMIT TRAN
RETURN @NewNo
若需叫號顯示屏同步,引入 SignalR / WebSocket / MQTT 推送號碼變更。