SQL para determinar se um único pedaço de dados é executado por chave em uma atualização ou inserção

Página atualizada :
Data de criação de página :

Em um processo como atualizar se há uma tecla ou Inserir se não houver chave, uma seleção geralmente é realizada com base na chave, e o processo é determinado verificando se há um caso. O SQL Server 2008 também adiciona uma instrução de "mesclagem" que permite realizar uma atualização e uma inserção (e, em seguida, excluir) com uma única instrução. No entanto, esta é uma comparação de duas tabelas e não é adequada para dados únicos.

Na verdade, há uma maneira de atualizar facilmente uma linha determinando atualização e inserção sem ter que verificar o número de registros com uma instrução selecionada.

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

A palavra chave aqui é "@@ROWCOUNT". O @@ROWCOUNT pode recuperar o número de linhas às quais o SQL anterior foi aplicado. O código anterior executa a instrução Atualizar primeiro e, se tiver sido atualizada, @@ROWCOUNT retorna 1 ou mais, para que não execute a próxima instrução Insert. Por outro lado, se nenhuma linha for atualizada na instrução Atualizar, @@ROWCOUNT retorna 0, execute Insert by IF statement judgment.

Como o SQL acima é um modelo, substitua os nomes e valores das colunas a serem atualizados no momento apropriado. @value é apenas um nome variável, então substitua isso pelo valor que deseja atualizar.