No SQL Server, uma operação "UpSert" combina as ações de uma inserção e uma instrução de atualização em uma única instrução. Esta operação insere uma nova linha em uma tabela se essa linha não estiver presente. Caso contrário, ele atualiza uma linha já presente. O benefício de executar uma operação de upsert é que ela elimina a necessidade de declarações de inserção e atualização separadas, simplificando seu código SQL e reduzindo a probabilidade de erros.
Criando uma tabela
Vamos criar uma tabela no servidor SQL que possamos usar para executar as operações de upsert em.
Criar tabela [DBO].[Funcionário](Saída:
Empid name depid salManeiras de executar a operação UpSert
Existem várias maneiras de executar uma operação de upsert no servidor SQL. Neste artigo, discutiremos os três métodos comuns para executar uma operação de upsert: usando a cláusula existe, a função RowCount e a declaração de mesclagem.
1. Usando a cláusula existe
Este método envolve o uso de uma subconsulta para verificar se a linha já existe na tabela antes de executar uma instrução de inserção ou atualização. A cláusula existe retorna true se a subconsulta retornar alguma linha.
Comece a transaçãoSaída:
Empid name depid salAqui, o código SQL usa o método existe para executar uma operação UpSert no servidor SQL. Inicia uma transação e declara as variáveis para manter os valores de identificação e nome do funcionário. O código verifica se existe um registro com o ID do funcionário especificado na tabela usando a cláusula exist. Se existir, atualiza o nome do funcionário para um novo valor. Caso contrário, ele insere uma nova linha com o ID e o nome do funcionário fornecido.
2. Usando a função RowCount
Este método envolve a execução de uma declaração de atualização primeiro, seguida de uma instrução de inserção se a declaração de atualização não atualizou nenhuma linhas.
Comece a transaçãoSaída:
Empid name depid salAqui, o código SQL tenta atualizar o nome do funcionário com o ID fornecido na tabela usando o updlock e dicas serializáveis que adquirem um bloqueio exclusivo na linha selecionada. Se a atualização não afetar as linhas, o código executará uma instrução Insert para inserir uma nova linha com o ID do funcionário e os valores do nome do funcionário.
3. Usando a declaração de mesclagem
Uma terceira maneira de executar uma operação de upsert no servidor SQL é aplicar a instrução MERGE. Este método combina as ações das instruções de inserção e atualização em uma única declaração, semelhante à cláusula existe, mas com recursos mais avançados.
declarar @employeeid int = 18;Saída:
Empid name depid salEsta consulta SQL usa a declaração de mesclagem para mesclar os dados de uma tabela de origem em uma tabela de destino. Ele corresponde às linhas entre as duas tabelas usando a "coluna empid" e atualiza a "coluna de nome" na tabela de destino se uma correspondência for encontrada. Se não houver correspondência, ele insere uma nova linha.
Conclusão
As operações UpSert são um requisito comum no servidor SQL. Existem várias maneiras de alcançá -los, incluindo o uso do método exist, a função RowCount e a declaração de mesclagem. Podemos escolher a melhor abordagem com base em nosso requisito.