SQL для визначення того, чи один шматок даних виконується ключем в оновленні або вставити

Сторінка оновлюється :
Дата створення сторінки :

У такому процесі, як Оновлення, якщо є ключ або Вставити, якщо немає ключа, вибір зазвичай виконується на основі ключа, і процес визначається перевіркою, чи є один випадок. SQL Server 2008 також додає оператор "злиття", який дозволяє виконувати оновлення та вставити (а потім видалити) з одним оператором. Однак це порівняння двох таблиць і не підходить для окремих даних.

Насправді, є спосіб легко оновити рядок, визначивши Оновлення та Вставлення без необхідності перевіряти кількість записів за допомогою оператора select.

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

Ключове слово тут - "@@ROWCOUNT". На @@ROWCOUNT можна отримати кількість рядків, до яких було застосовано попередній SQL. Попередній код спочатку виконує оператор Update, і якщо він був оновлений, @@ROWCOUNT повертає 1 або більше, тому він не виконує наступний оператор Insert. І навпаки, якщо жоден рядок не оновлюється в операторі Оновлення, @@ROWCOUNT повертає 0, тому виконайте рішення вставити за оператором IF.

Оскільки наведений вище SQL є шаблоном, замініть імена стовпців і значення, які будуть оновлені у відповідний час. @value це просто ім'я змінної, тому замініть це значенням, яке потрібно оновити.