Oracle MERGE (Português)

Resumo: neste tutorial, você aprenderá a usar a instrução Oracle MERGE para realizar uma atualização ou inserção dados com base em uma condição especificada.

Introdução à instrução Oracle MERGE

A instrução Oracle MERGE seleciona dados de uma ou mais tabelas de origem e o atualiza ou insere em uma tabela de destino. A instrução MERGE permite que você especifique uma condição para determinar se deve atualizar ou inserir dados na tabela de destino.

O seguinte ilustra a sintaxe do Oracle MERGE declaração:

Vamos examinar a MERGE declaração em detalhes:

Primeiro, especifique a tabela de destino (target_table) que você deseja atualizar ou inserir na cláusula INTO.

Em segundo lugar, especifique a fonte de dados (source_table) a ser atualizada ou inserida na cláusula USING.

Terceiro, especifique a condição de pesquisa na qual a operação de mesclagem atualiza ou insere na cláusula ON.

Para cada linha na tabela de destino, o Oracle avalia a condição de pesquisa:

  • Se o resultado for verdadeiro, o Oracle atualiza a linha com os dados correspondentes da tabela de origem.
  • Caso o resultado seja falso para um y linhas, o Oracle insere a linha correspondente da tabela de origem na tabela de destino.

A instrução MERGE torna-se conveniente quando você deseja combinar várias instruções INSERT, UPDATE e DELETE em uma única operação.

Como MERGE é uma instrução determinística, você não pode atualizar a mesma linha da tabela de destino várias vezes na mesma instrução MERGE .

Você pode adicionar uma cláusula DELETE WHERE opcional à cláusula MATCHED para limpar após uma operação de fusão. A cláusula DELETE exclui apenas as linhas na tabela de destino que correspondem a ON e DELETE WHERE cláusulas.

Pré-requisitos do Oracle MERGE

Para executar a instrução MERGE, você deve ter o INSERT e UPDATE nas tabelas de origem. Se você usar a cláusula DELETE, também deve ter o DELETE privilégio de objeto na tabela de destino.

Oracle Exemplo MERGE

Suponha que tenhamos duas tabelas: members e member_staging.

Nós insira uma nova linha na tabela members sempre que tivermos um novo membro. Em seguida, os dados da tabela members são combinados com os dados da tabela member_staging.

As seguintes declarações crie as tabelas members e member_staging:

As seguintes INSERT as instruções inserem dados de amostra nas tabelas members e member_staging:

Ao atualizar os dados das tabelas members tabela para member_staging tabela, devemos realizar as seguintes ações:

  • Atualizamos as linhas com o id de membro 1, 3 , 4 e 6 porque a classificação ou o sobrenome desses membros nessas tabelas são diferentes.
  • Inserimos as linhas com ID de membro 7 a 10 porque essas linhas existem no members tabela, mas não na tabela member_staging.

No total, 8 linhas devem ser mescladas.

O que segue ing é a instrução MERGE que executa todas essas ações de uma vez.

A instrução merge compara cada linha em members tabela com cada linha na member_staging tabela com base nos valores nas colunas member_id (consulte ON cláusula acima).

Se os valores nas member_id colunas de ambas as tabelas forem iguais, o MERGE atualiza o nome, o sobrenome e a classificação da tabela members para a tabela member_staging apenas se os valores do primeiro nome, sobrenome ou colunas de classificação de ambas as tabelas são diferentes.

Caso contrário, ele insere a linha da tabela members na member_staging tabela.

O Oracle retornou 8 linhas mescladas conforme o esperado.

Neste tutorial, você aprendeu como usar o Oracle MERGE declaração para atualizar ou inserir dados com base em uma condição especificada.

  • Este tutorial foi útil?
  • Sim Não

Leave a Reply

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *