2011-01-26 49 views
0

我有一個表需要插入5000個記錄作爲批量插入,但我必須從表中爲每個語句選擇最大ID,我決定編寫一個存儲過程來選擇最大ID一次,並增加它爲每個記錄快速插入記錄,但有可能有一些其他用戶使用相同的存儲插入小妞可能會發生衝突 我怎樣才能鎖定表,直到我完成插入通過使用Sp或正常的插入腳本?在插入過程中鎖定表

+4

爲什麼不只是使用`IDENTITY`? – Quassnoi 2011-01-26 13:43:43

回答

1

就像Quassnoi所說的,你最好的選擇是使用IDENTITY,並且有一個更簡單和複雜的過程。

如果你致力於利用您所描述的過程中,所有應該採取的是:

INSERT INTO MyTable WITH (TABLOCK) 
(field 1, field2, field3...) 
VALUES 
(value 1, value 2, value 3...) 

TABLOCK提示提出排它表鎖的插入/更新(你也可以使用TABLOCKX這是一個明確的排他鎖定,但除了SELECT之外沒有必要)。

TABLOCK提示也將使如果你的跟蹤標誌的設置是否正確最低限度記錄的插入操作,即通常顯著更快,雖然只有5000條記錄,你可能不會注意到差別。