0
我有插入一条记录与唯一的索引上A
柱和柱B
,并且如果这是成功,执行无法回滚(API请求)一个异步动作并发的工作流程,内部的单笔交易。具有唯一索引锁定行
表示API请求应该只发生一次,但是如果该记录并行插入,可能会多次触发。
如果我没有弄错,解决此问题的方法是在违规行上设置锁定,以确保任何并行惰性数据都将等到初始事务完成。
哪个锁定对于这个用例是正确的?
我有插入一条记录与唯一的索引上A
柱和柱B
,并且如果这是成功,执行无法回滚(API请求)一个异步动作并发的工作流程,内部的单笔交易。具有唯一索引锁定行
表示API请求应该只发生一次,但是如果该记录并行插入,可能会多次触发。
如果我没有弄错,解决此问题的方法是在违规行上设置锁定,以确保任何并行惰性数据都将等到初始事务完成。
哪个锁定对于这个用例是正确的?
不需要显式锁定。
如果第二个交易插入该一个未致力于其他事务已经插入的PK的相同值,第二将等待,直到所述第一事务提交或回退。
如果第一个事务回滚,第二个事务将成功。如果第一个事务提交,第二个会得到“唯一密钥违规”错误。
是的,问题是我在事务内执行API请求,所以两个事务可以插入行,发送请求,然后其中一个将回滚。 API请求位于事务内部,因为如果API请求失败,应该回滚插入。 – Tarlen