SQL, чтобы определить, выполняется ли один фрагмент данных с помощью ключа в обновлении или вставке
В таком процессе, как Обновить, если есть ключ или Вставить, если ключ отсутствует, выбор обычно выполняется на основе ключа, и процесс определяется путем проверки наличия одного случая. SQL Server 2008 также добавляет инструкцию "merge", которая позволяет выполнять Update и Insert (а затем Delete) с помощью одной инструкции. Однако это сравнение двух таблиц и не подходит для единичных данных.
На самом деле, есть способ легко обновить строку, определив Update и Insert без необходимости проверять количество записей с помощью оператора 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 не выполняется. И наоборот, если в инструкции Update не обновляется строка, @@ROWCOUNT возвращает значение 0, поэтому выполните команду Insert by IF.
Поскольку приведенный выше SQL является шаблоном, замените имена столбцов и значения, которые будут обновлены в соответствующее время. @value — это просто имя переменной, поэтому замените его значением, которое вы хотите обновить.