我遇到了一个问题,不知道如何用DB实现它。我在应用程序方面已经走了。我有产品表,其中列被指定为 .当有人点击 API 时,我需要将端口分配给服务。它需要根据其产品名称递增 by。last_port_usedlast_port_id1一种可能的解决方案是使用redis服务器并在那里同步此值。因为我们没有redis。我想通过.psql我读了更多关于锁的信息,我认为我需要锁。这是正确的方法吗?ACCESS EXCLUSIVEproductidnamestart_port //11000end_port//11999last_port_used// 11023如何同时正确处理?
1 回答
侃侃无极
TA贡献2051条经验 获得超10个赞
您可以简单地执行以下操作:
UPDATE products SET last_port_used = last_port_used+1
WHERE id=...
AND last_port_used < end_port
RETURNING *
这将以线程安全的方式执行更新,并且仅当端口号可用(last_port_used < end_port)并返回分配的端口时。
如果需要锁定该行,还可以使用“选择以进行更新”。
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报
0/150
提交
取消