同时输入查询c#

时间:2014-09-04 00:59:15

标签: c# sql sql-server

我有一个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,依此类推。

任何人都可以帮助我吗?任何想法我怎么可能这样做?

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)

如果您不想在日期重置时使用标识列,则可以创建另一个表来保存标识列。

我的意思是,边表将保存标识列,您将从该表插入并获取标识值。 在日结束时,您可以运行任务来截断边表。