我有一個表,其中有兩列避免重複條目,而不是關鍵字段
key -> Primary Key, auto incremented
reqNumber -> This is a custom generated value
的reqNumber的結構爲年/月/日/數字,其中數字是已請求的次數那天。因此,例如,如果3個請求已於今日和2昨天,該表將具有
key reqNumber
1 2013/07/16/001
2 2013/07/16/002
3 2013/07/17/001
4 2013/07/17/002
5 2013/07/17/003
我遇到的問題是,有時多個用戶保存在同一時間。進行保存的過程首先檢查今天創建了多少個,然後將其添加1,因此對於上面的內容,它會看到3個是今天創建的,因此下一個將是4.之後,它執行插入操作。
但是如果兩個用戶同時點擊保存,他們都得到4,這意味着當插入發生我得到了兩次2013/07/17/004。
有沒有辦法避免這種情況,無論是在SQL或.Net?鎖是唯一的方法,那些會減慢性能是否正確?
您應該在同一個事務中執行'select'和'update',並鎖定表,直到'update'完成。這樣一次只有一個用戶可以訪問表,其他用戶則等待事務完成。 –