共享数据问题
我正在开发 ASP.NET 在线商店。每个产品都有一个实体,即使用户出售它,它的实体也应该减少。 因为这个字段是所有用户共享的,所以它可能是负数(因为共享数据问题)。 现在,我该如何预防这个问题呢?我可以为此使用交易吗?如果可以,我应该使用什么隔离级别?如果没有,我该怎么办?
I am working on an ASP.NET Online Shop. every products has an entity and even a user sells it, its entity should be decreased.
because this field is shared between all users, it may be negative (because of the shared data problem).
Now, how can I prevent this problem? Can I use transaction for this? If I can, what the isolation level should I use? And if not, what should I do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果可能的话,我建议进行一些设计更改。我不会减少/增加,换句话说更新字段,而是在每次销售时插入一条记录。然后我将创建一个存储过程并安排它定期运行。
这将确保一次只有一个进程更新计数器。
这是我所知道的保证字段 100% 一致的唯一方法。
有些人可能会建议悲观锁——我在任何情况下都不会使用它。
I would recommend to make some design changes if possible. Instead of decreasing/increasing, in other words updating a field, I would insert a record every time a sell is made. Then I would create a stored procedure and schedule it to run it on regular basis.
This will assure that only one process at a time updates the counter.
This is the only way I know to guarantee 100% the field will be consistent.
Some people may suggest pessimistic lock - I would never use it under any circumstances.