像标题:是否有任何并行执行发生在SQL服务器?。 我的情况是这样的: 产品表:是否有任何并行执行发生在SQL服务器?
ProductId Name Amount
1 one 1
更新语句(此语句可以把存储过程中的SQL或原始的SQL语句从.NET代码):
Update Product set Amount = Amount - 1 where ProductId=1
所以在我的UI布局,我有一个按钮来执行上面的更新语句。当我把这个网站发布到互联网上时,假设两个用户(或更多)同时进入我的网站,同时确切地是并且同时点击这个按钮正好是。所以如果这更新声明执行我的金额栏将小于0(在这种情况下,它将是-1)。但我的逻辑是金额栏必须大于或等于0。我知道sql中的并发编辑数据,我们有乐观或悲观的方法来处理这个问题,因为我的知识乐观和悲观的方法只是为了重叠时间(一个在另一个之前执行)。我想知道如何处理这个问题,如果发生。因为我在购物网站上工作,并且我想向用户宣布此产品已售罄或存在的友好讯息。我认为我不在乎我使用ADO.net或EF或其他来做到这一点,只是在.NET和SQL工作的情况下。请给我一些建议或深入解释这种情况,因为我谷歌这么多,但没有发现任何东西看起来像这样。如果我不正确,请更正我的信息,因为我的英语不够好,无法理解我提到的一些文章! 非常感谢。
它们总是先执行一个,因为即使假定SS接受并行请求,它们也会被同步(但并行执行)。为了检测这种情况,IMO最简单的方法是使用时间戳。如果您想要更新的记录在您阅读后已更新,那么这意味着您必须将此情况通知给用户(经典的预订服务示例)。 –
您可以添加产品的约束也看交易水平http://stackoverflow.com/questions/tagged/sq – danisius
@阿德里亚诺我只是想明白你的想法清楚这个词:“即使假设SS接受并行请求,他们会同步(但并行执行)“。你的意思是.net发送并行请求到sql,但是sql会同步它们并像队列一样执行一个?什么是SS含义! – vietvoquoc