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 tabelamember_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