我的主管给了我一个很神祕的需求:
我们的程式有一个update的函数
可以走 JPA Repository
也可以直接下 SQL
这个update的函数要抓出某种资料 条件是其中一个字段 fg == 0
则做的事情就是把 fg = 1
UPDATE data SET fg = 1 WHERE fg = 0 类似这种感觉
现在问题来了
因为同时有可能有多个thread呼叫这个函数
假设数据库里有一笔 fg 为 0 的资料
A, B 两个一起呼叫
则可能
A 要回传 成功更新 1 笔
B 要回传 成功更新 0 笔
或是AB逆转也可,
就是应该只有一个人找到 fg = 1 并更新成功
我的主管要求如下:
1. 不可以 lock 资料 (因为据说 lock 会影响效能)
2. 函数执行不先去查资料, 而是直接跑 UPDATE
我可以怎么做?
1000p悬赏