向.net应用程序中的同一函数发送多个请求

问题描述 投票:0回答:1

我有一个在实体中运行的前端应用程序,我想要最佳实践来解决以下问题。有时,两个并发用户会执行相同的请求,他们在后端调用的函数会从数据库中选择最大数量并向其添加 1。这里的问题是,当两个并发请求从前端到后端触发时,我无法解决,因为两个请求同时触发相同的请求,并从数据库中选择相同的数字,因此两个请求都更新为相同的值,因此其中一个请求会覆盖另一个请求。他们之间的差距是毫秒但无法处理。

对于知识来说,后端应用程序是.net框架,数据库是Oracle 19g

我也不知道 2two 请求是并发还是并行进行。

.net oracle concurrency .net-4.8
1个回答
0
投票

您可以使用序列

解决下面提到的问题

从数据库中选择最大编号并添加 1。

您可以创建一个以起始值作为当前最大值(列)的序列,如下所示

CREATE SEQUENCE seq_name start with 300  NOMAXVALUE INCREMENT BY 1;

然后使用 Sequence.nextval 获取下一个数字,如下所示

 seq_name.nextval

编辑1:-由于您有不同的实体,您可以执行以下操作

 select max(order_no),seq_name.nextval
 from your_table;

如果您对相同的实体获得相同的 max(order_no),请检查 seq_name.nextval 值,并用 max(order_no)+2 增加该实体,并使用更大的 seq_name.nextval,然后对另一个实体使用 max(order_no)+1用户。还尝试每天删除并重新创建序列以进行更好的管理

© www.soinside.com 2019 - 2024. All rights reserved.