假設MyTable的表結構(MyTableId NVARCHAR(MAX)PRIMARY KEY,NumberOfInserts INTEGER)。SQL Server 2016上INSERT或UPDATE的安全解決方案
我經常需要更新(即遞增現有記錄的計數器),或者在NumberOfInserts中不存在值爲0的情況下插入新記錄。
本質:
IF (MyTableId exists)
run UPDATE command
ELSE
run INSERT command
我擔心的是,由於失去競爭條件數據等
什麼是寫這個最安全的方式?
如果可能,我需要它100%準確,並且願意在必要時犧牲速度。
您可以使用MERGE命令查看,它一次性組合更新,插入和刪除。幾個觀察,請不要稱該列'鍵'它是SQL Server中的保留字。另外,你使用它作爲主鍵嗎?如果是這樣,NVARCHAR(MAX)是一個非常糟糕的主意。 –