Insert, Update e Delete com MERGE (Oracle) |
Categoria: Oracle | ||
Publicado em 19 de Junho de 2013 | ||
O comando MERGE pode ser usado para que de uma só vez, INSERT, UPDATE e DELETE sejam executados sobre os registros de uma tabela de acordo com o resultado de outra tabela, view ou subquery:
No exemplo acima, a tabela de auditoria é preenchida com todas as compras realizadas no ano de 2013. Caso o registro já exista na tabela de auditoria, o registro somente é atualizado. Caso não exista, o registro é inserido. O DELETE das linhas 11 e 12 somente é aplicado aos registros que são alterados (via o comando UPDATE das linhas 9 e 10), e a tentativa de remoção ocorre imediatamente após o registro ser alterado. A linha 2 é a tabela cujos registros serão afetados. A linha 4 é a tabela cujos valores serão utilizados para atualizar os registros da outra tabela. As linhas 5 a 7 é a condição relacional onde haverá a atualização de registros. As linhas 25 a 27 representam restrições. Se não forem satisfeitas, o registro não será inserido/modificado. |