2016-03-10 33 views
0

我想知道如何使用鎖定來阻止來自SQL Server中的多個用戶的相同存儲過程事務?如何使用鎖定來阻止來自SQL Server中多個用戶的相同存儲過程事務?

我有很多書,每本書有1到100的序列號。

而且我寫了一個存儲過程與交易將數據插入到主表和每個交易序列號更新booktable像1,2,3 ...... 100,並分配號碼給每個用戶像我有一些書1.

預訂/的SerialNo

  • 用戶1具有1/1
  • 用戶2具有1/2 =
  • ....
  • User100有1/100

多個用戶將使用此應用程序。

所以我不想重複序列號某本書像

User1 has 1/1 
User2 has 1/2 
user3 has 1/2 
user4 has 1/3 

我有多個交易T1,T2,T3 ...在同一時間,並使用同樣的程序。將數據插入到主表和更新的書序號..

現在我想知道如何保護或鎖定交易。直到T1沒有完成自己的任務..保持T2和T2然後沒有完成自己的任務..T3擱置..

請給我提供最佳的解決方案或例子。

+1

是什麼一一是什麼意思? – TheGameiswar

回答

0

這是不容易的實際上是找出你的問題,但我會假設你需要的東西是這樣的:

declare @serialNo 

update top(1) Books 
set 
    @serialNo = serialNo, 
    status = 'R', 
    user = @userId 
where 
    book = @bookId and 
    status = 'F' 

這裏假設你有一個狀態(自由/保留),你想選一個他們爲用戶。

+0

其實問題是當交易1和交易-2有相同的書號和序列號,如 T1 = 1/1 T2 = 1/1 比如何停止同時插入重複值。 – Rohit

+0

@Rohit序號來自表格,並且由於它要求狀態值爲'F',所以這些事務不會得到相同的序號。 –

相關問題