我有一个许可证密钥/序列号的 sql server 表。表结构类似于;
[
RecordId int,
LicenceKey string,
Status int (available, locked, used, expired etc.)
AssignedTo int (customerId)
....
]
通过我的 ASP.NET 应用程序,当用户决定单击接受按钮购买许可证时,我需要为用户保留许可证密钥。我的方法是,从 KeysTable 中选择前 1 个许可证密钥,其中状态 = 可用更新密钥表设置状态 = 锁定,然后将密钥返回给应用程序。
我担心的是,如果两个 asp.net 线程访问相同的记录并返回相同的许可证密钥。您认为完成此类作业的最佳做法是什么?这类问题是否有众所周知的方法或模式?如果我需要,在哪里使用 lock() 语句?
我正在使用 Sql Server 2005、用于数据访问的存储过程、DataLayer、BusinessLayer 和 Asp.Net GUI。
谢谢