多个实例访问和更新表上相同字段的锁定机制

问题描述

我有一个 spring-boot 应用程序,它处理订单并放置在三个节点上并同时工作。为了处理订单,他们必须转到商店表并获取放置在该商店的最后一个订单 ID。它不是通用订单 ID,而是该商店下订单的数量。 以下是有问题的表结构:

表格:商店

商店编号:字符串

storeOrderNum: int

StoreInfo:这是店铺信息

每个实例都会获取 storeOrderNum 并将其增加 1。

我们使用的更新查询是:

UPDATE store

SET store_order_num =  (SELECT CASE

WHEN store_order_num > 9998 OR store_order_num IS NULL THEN 1

ELSE store_order_num + 1

END

FROM store

WHERE store_num = #{store_num}) WHERE store_num = #{store_num}

我想实现一种锁定机制,以便多个实例无法同时读取或写入特定存储的同一列。功能方面,如果两个实例都进行了相同的更新,则应等待另一个实例完成。任何方向都会有所帮助。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...