我試圖刪除需要顯式鎖定下面的代碼的表,但從報告我一直得到它可能是該行中的參數和值遭受競爭條件。如果在單個更新語句中執行,SQL中的操作是否保證爲原子操作?
Declare @NextNumber Int;
Update
MyParameterTable
Set
NextNumber = NextNumber + 1,
@NextNumber = NextNumber + 1
Select @NextNumber As NextNumber;
希望你能看到它只是遞增一個整數並返回結果。我的印象是,以這種方式格式化的更新語句將處理必要的鎖定,但正如我所說的,可能是參數在更新鎖定之外被分配的情況。
任何人都可以拋出一些光,並建議一個替代?
問候
瑞安
我不知道SQL讓你這樣做,謝謝。 –
@Ryan ONeill:請注意,如果您在set語句中多次混淆@NextNumber,則此特殊語法可能會出現問題。 – ErikE