Sybase"选择更新" +" readpast"竞争条件重复记录15.7 EBF 28807 SP140

2020-08-30 06:38发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)上一个问题的后续操作 https...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


上一个问题的后续操作 https://answers.sap.com/questions/12858432/sybase-15.7-%E2%80%9Cselect-for-update %E2%80%9D-%2B-%E2%80%9Creadpast.html?childToView = 12863616

我们设法重现了该问题。 如果启动两个Sybase DB控制台客户端,每个客户端都运行以下脚本,则我们可以观察到两个客户端都处理了相同的" valueField"值。

请注意,TABLE没有重复的记录。

Sybase版本:Adaptive Server Enterprise/15.7/EBF 28807 SMP SP140 ONE-OFF/P/x86_64/Enterprise Linux/ase157sp140x/4122/64-bit/FBO/Mon Jan 21 04:04:08 2019

" TABLE"有两个字段," systemDate"和" valueField",都有索引。

 while(从表中选择count(*))> 0
 开始
 开始交易
 声明@valueField varchar(12)
 从表updlock readpast中选择top 1 @valueField = valueField,其中优先级= 1由systemDate进行更新
 打印@valueField
 从table中删除,其中valueField = @valueField
 等待延迟'00:00:01'
 提交交易
 结束