我苦苦尋找SQL服務器更換爲select for update
的作品。SQL服務器選擇更新
我有一個包含其用於下一個定單編號的列的主表。應用程序在此行上執行從更新中進行的選擇,讀取當前值(鎖定時)將此值添加一個值,然後更新該行,然後使用收到的數字。這個過程完全適用於我嘗試過的所有數據庫,但是對於似乎沒有任何選擇專用數據的過程的SQL Server。
我怎樣做一個鎖定的讀取和像從序列表中的下一個訂單號更新爲SQL服務器?
順便說一句,我知道我可以使用的東西像IDENTITY
的cols和東西,要做到這一點,但在這種情況下,我必須從這個現有列讀取。獲得價值並加以利用,並以安全鎖定的方式進行操作,以避免2名用戶獲得相同的價值。
更新::
謝謝你,對於這種情況下的工作:)
DECLARE @Output char(30)
UPDATE scheme.sysdirm
SET @Output = key_value = cast(key_value as int)+1
WHERE system_key='OPLASTORD'
SELECT @Output
我有另外一個地方,我做同樣的事情。我也讀取並鎖定了股票記錄。
SELECT STOCK
FROM PRODUCT
WHERE ID = ? FOR UPDATE.
我然後做一些驗證和做
UPDATE PRODUCT SET STOCK = ?
WHERE ID=?
我不能只使用上面的方法在這裏,作爲值我更新是基於我的事情從我讀的股票做。但我需要確保在我這樣做的時候沒有其他人能夠囤積股票。再次,容易在其他數據庫的SELECT FOR UPDATE
...有沒有一個SQL Server的解決方法? :)
你能後的現有代碼?我可能是錯的,但你可能只是想做到這一點:'UPDATE表SET字段=字段+ 1 WHERE東西' – jazzytomato 2014-09-26 09:32:29