2016-12-30 75 views
0

我有插入一條記錄與唯一的索引上A柱和柱B,並且如果這是成功,執行無法回滾(API請求)一個異步動作併發的工作流程,內部的單筆交易。具有唯一索引鎖定行

表示API請求應該只發生一次,但是如果該記錄並行插入,可能會多次觸發。

如果我沒有弄錯,解決此問題的方法是在違規行上設置鎖定,以確保任何並行惰性數據都將等到初始事務完成。

哪個鎖定對於這個用例是正確的?

回答

0

不需要顯式鎖定。

如果第二個交易插入該一個未致力於其他事務已經插入的PK的相同值,第二將等待,直到所述第一事務提交或回退。

如果第一個事務回滾,第二個事務將成功。如果第一個事務提交,第二個會得到「唯一密鑰違規」錯誤。

+0

是的,問題是我在事務內執行API請求,所以兩個事務可以插入行,發送請求,然後其中一個將回滾。 API請求位於事務內部,因爲如果API請求失敗,應該回滾插入。 – Tarlen