2016-12-30 62 views
0

我有插入一条记录与唯一的索引上A柱和柱B,并且如果这是成功,执行无法回滚(API请求)一个异步动作并发的工作流程,内部的单笔交易。具有唯一索引锁定行

表示API请求应该只发生一次,但是如果该记录并行插入,可能会多次触发。

如果我没有弄错,解决此问题的方法是在违规行上设置锁定,以确保任何并行惰性数据都将等到初始事务完成。

哪个锁定对于这个用例是正确的?

回答

0

不需要显式锁定。

如果第二个交易插入该一个未致力于其他事务已经插入的PK的相同值,第二将等待,直到所述第一事务提交或回退。

如果第一个事务回滚,第二个事务将成功。如果第一个事务提交,第二个会得到“唯一密钥违规”错误。

+0

是的,问题是我在事务内执行API请求,所以两个事务可以插入行,发送请求,然后其中一个将回滚。 API请求位于事务内部,因为如果API请求失败,应该回滚插入。 – Tarlen