Sql server 多个用户争夺;“下一步”;命令
我有一个调用SQL Server 2016存储过程的应用程序。该过程有一个事务,其中包括从优先顺序排列的订单列表中获取下一个订单,然后该事务在ERP中执行附加插入和更新 我遇到的问题是,当我有多个应用程序在寻找下一个订单时。对于他们来说,查询存储过程中的下一个订单并获得相同的订单并不困难 即使插入/更新将按预期锁定,选择获取下一个订单也不会锁定…因此获取下一个订单的场景很容易出现重复Sql server 多个用户争夺;“下一步”;命令,sql-server,stored-procedures,transactions,Sql Server,Stored Procedures,Transactions,我有一个调用SQL Server 2016存储过程的应用程序。该过程有一个事务,其中包括从优先顺序排列的订单列表中获取下一个订单,然后该事务在ERP中执行附加插入和更新 我遇到的问题是,当我有多个应用程序在寻找下一个订单时。对于他们来说,查询存储过程中的下一个订单并获得相同的订单并不困难 即使插入/更新将按预期锁定,选择获取下一个订单也不会锁定…因此获取下一个订单的场景很容易出现重复 解决这个问题最干净的方法是什么?如果可能的话,我不希望在select的事务中应用任何自定义锁定。我还研究了引入一
解决这个问题最干净的方法是什么?如果可能的话,我不希望在select的事务中应用任何自定义锁定。我还研究了引入一个表来存储正在“工作”的顺序,以防止对相同顺序的任何其他读取。我很惊讶我从来没有遇到过这种情况,所以希望有人对此有一个干净的最佳实践。解决方案的形式是: 查询以获取下一个订单
- 开始转换
- 使用此条件更新此订单的数据库
- 如果没有受影响的记录,则引发错误并告诉用户重试
- 否则,继续此订单的其他trans插入和更新
- 端反式
- 开始转换
- 使用此条件更新此订单的数据库
- 如果没有受影响的记录,则引发错误并告诉用户重试
- 否则,继续此订单的其他trans插入和更新
- 端反式