SQL Server 2012并发插入逻辑检查

时间:2018-12-10 20:46:31

标签: sql-server concurrency sql-server-2012

要求:

  • 用户可以为任意包装购买任意数量的计数,并为用户随机生成积分
  • 计数达到一定数量(例如:10000)时,包裹将关闭,最后一位购买包裹的人将得到包裹
  • 如果最后一个用户购买的包裹超过10000个,则其余的将不会插入

我的问题是:假设他们有成千上万的用户似乎在完全相同的时间购买了同一包的最后一批产品,这将完全按预期进行吗?

假设我们现在处于包装1,计数总和为9997:

  • 用户1到用户100购买套餐1的3计数
  • 用户101到用户200购买套餐1的5个计数
  • 用户201到用户300购买套餐1的7计数

完全在同一时间。

可以确定在10000总和后不会插入以下存储过程吗?

如果不能确定,我该如何满足情况和要求?

cout << getppid() << endl;

事务存储过程

UserID PackageID Count  Point
-----------------------------
  1       1        1      3.2
  2       2        3      2.5
  3       1        4      5.1
  2       3        5      6.3

0 个答案:

没有答案