當下面的代碼幾乎同時被調用兩次時,我遇到了麻煩。SQL Server,雙精度同時插入,唯一性錯誤
DECLARE @membershipIdReturn as uniqueidentifier=null
SELECT @membershipIdReturn = MembershipId
FROM [Loyalty].[Membership]
WITH (NOLOCK)
WHERE ContactId = @customerIdFront
AND
IsDeleted = 0
IF (@membershipIdReturn IS NULL)
//InsertStatementHere
調用非常接近(大約千分之一秒),第二個調用也進入if語句中。然後一個單一性失敗就是解除,因爲這不應該發生。
錯誤是因爲(NOLOCK)
?我需要它來解決交易問題。
有沒有解決此問題的方法?
由於鋁
只是要清楚,你說 [[[選擇MembershipId FROM [忠誠]。[會員] WITH(NOLOCK)WHERE的ContactID = @customerIdFront請將isDeleted AND = 0]]] 不爲NULL ,但是你的IF語句在運行之後會變成真實的嗎? – Aushin
這兩個語句幾乎同時運行。有了正常的行爲,只有第一次運行應該對if語句有效,第二次不應該是true,因爲第一次運行已經完成了。但由於呼叫彼此如此接近,所以兩次運行都會輸入if語句。謝謝,Al – AlForStack