O Oracle fornece um comando que é capaz de atualizar, inseri...

Próximas questões
Com base no mesmo assunto
Q719379 Banco de Dados
O Oracle fornece um comando que é capaz de atualizar, inserir ou remover dados de modo condicional em uma tabela de banco de dados. Trata-se do comando
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - MERGE.

O comando MERGE no Oracle é uma operação poderosa que combina as funcionalidades de inserção, atualização e exclusão em uma única estrutura de comando. Esse comando é frequentemente utilizado para sincronizar duas tabelas de forma que as alterações realizadas em uma tabela sejam refletidas em outra, baseando-se em um conjunto de condições especificado.

A sintaxe básica do MERGE envolve a identificação da tabela de destino onde as operações vão ocorrer, a tabela de origem dos dados e a condição que determina como as linhas das duas tabelas serão correlacionadas. Se a condição de correspondência é atendida, a operação de atualização é executada. Se não houver correspondência, a operação de inserção pode ser realizada. O comando também pode especificar uma operação de exclusão para as linhas que não satisfazem a condição.

Neste cenário, o comando MERGE é adequado para realizar atualizações condicionais baseadas no conteúdo de outra tabela, inserções de novos registros ainda não existentes, ou exclusões de registros obsoletos ou desnecessários. É uma ferramenta extremamente útil para manter dados sincronizados e para operações de ETL (Extração, Transformação e Carga), que são comuns em ambientes de data warehouse.

As outras alternativas apresentadas não correspondem ao comando que realiza as três operações mencionadas (atualizar, inserir, remover) de maneira condicional:

  • IFOPERATION e IFCONSTRAINT não são comandos válidos no SQL Oracle.
  • TRUNCATE é um comando que serve para remover todos os registros de uma tabela, mas não permite condições.
  • PURGE é utilizado para remover definitivamente objetos que foram previamente excluídos, como tabelas ou índices, mas não possui funcionalidade de atualização ou inserção condicional.

Portanto, a habilidade de utilizar o comando MERGE é essencial para profissionais que precisam gerenciar a integridade e a sincronização dos dados no Oracle Database de forma eficiente e eficaz.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Gabarito: c)

 

Purpose

Use the MERGE statement to select rows from one or more sources for update or insertion into a table or view. You can specify conditions to determine whether to update or insert into the target table or view.

This statement is a convenient way to combine multiple operations. It lets you avoid multiple INSERT, UPDATE, and DELETE DML statements.

Letra C.

"O comando MERGE seleciona linhas de uma ou mais origens para serem atualizadas ou visualizadas. Allém disso, o comando MERGE é uma forma conveniente de combinar múltiplas operações DML, como INSERT, UPDATE e DELETE."

Fonte: https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606

questão similar:

No Oracle 11g há uma instrução que permite atualizar, inserir ou remover linhas condicionalmente em uma tabela, evitando o uso de várias instruções DML. Esta instrução é especialmente útil nas aplicações em ambientes de Data Warehouse, nas quais é preciso trabalhar com dados provenientes de várias origens. Trata-se da instrução 

a)SWITCH. 

b)TRUNCATE. 

c)MERGE. 

d)IFCOMMAND. 

e)EXEC. 

 

gab.: c 

truncate é utilizado no postgres

Exemplo do Merge:

MERGE INTO bonuses  D 

USING (SELECT employee_id, salary, department_id FROM employees WHERE department_id = 80) S ON (D.employee_id = S.employee_id) 
    WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01 
        DELETE WHERE (S.salary > 8000) 
    WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus) VALUES (S.employee_id, S.salary*.01) WHERE (S.salary <= 8000);

Fonte: https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo