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
memberstabela, 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