我有一个C#应用程序,其中一个或多个用户可以进行交易。一旦完成事务,应用程序将根据数据库中输入的最大数据数提供一个数字。当只有一个用户正在执行一个事务时,它工作正常,但是,当有多个用户并且我同时点击提交按钮时,所有用户都会收到相同的号码。
我想要做的是用户在同时点击提交按钮时没有收到相同的号码。
我的查询获取号码是:
SqlCommand cmd5 = new SqlCommand("Select Max(q_num) FROM [NUMBER] Where CONVERT(VARCHAR(10),g_time,110) = '" + DateTime.Now.ToString("MM-dd-yyyy") + "'", con);
它获得每天的最大交易次数。即使所有用户同时点击提交按钮,我怎么能做到这一点?用户1将获得数字1,用户2将获得数字2,依此类推。
任何人都可以帮助我吗?任何想法我怎么可能这样做?
答案 0 :(得分:2)
听起来你应该有一个进入事务的存储过程并返回Inserted.q_num
字段。
类似的东西:
create procedure transaction_add
@customerid int,
@othermetadata varchar(100)
as
insert into sometable (customerid, othermetadata)
output Inserted.q_num
values (@customerid, @othermetadata)
go
答案 1 :(得分:0)
如果您不想在日期重置时使用标识列,则可以创建另一个表来保存标识列。
我的意思是,边表将保存标识列,您将从该表插入并获取标识值。 在日结束时,您可以运行任务来截断边表。