確定單個數據是按鍵更新還是插入的 SQL

更新頁 :
頁面創建日期 :

如果存在密鑰,則執行“更新”,如果沒有,則“插入”等操作通常基於密鑰執行 Select,以確定是否存在任何內容。 此外,SQL Server 2008 添加了「合併」語句,允許單個語句執行更新和插入。 但是,這是對兩個表的比較,不適合單個數據。

實際上,有一種方法可以輕鬆確定更新和插入並更新行,而無需在選擇語句中查找計數。

update [TableName]
set [ColumnName] = @value
--    : 他更新 SQL
where [KeyColumnName] = @value
--    : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
  [ColumnName]
--  : 他更新 SQL
)
values
(
  @value
--  : 他更新値
)

關鍵字是“@@ROWCOUNT”。 @@ROWCOUNT可以獲取應用了上一個 SQL 的行數。 上述代碼首先執行 Update 語句,如果更新,@@ROWCOUNT 將返回一個或多個,因此不會執行下一個插入語句。 相反,如果 Update 語句不更新一行,@@ROWCOUNT 將返回 0,因此在 IF 語句確定中執行插入。

由於上述 SQL 是範本,因此請替換及時列名稱、要更新的值等。 @value 只是一個變數名稱,因此請將其替換為要更新的值。