SQL para determinar se um único pedaço de dados é executado por chave em uma atualização ou inserção
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.