DB2 12 - Inserting data and updating data in a single operation


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES, Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 12 - Inserindo e atualizando dados em uma única operação - Inserting data and updating data in a single operation

Você pode atualizar os dados existentes e inserir novos dados em uma única operação.
Esta operação é útil quando você deseja atualizar uma tabela com um conjunto de linhas, algumas das quais são alterações nas linhas existentes e algumas das quais são novas linhas.
You can update existing data and insert new data in a single operation.
This operation is useful when you want to update a table with a set of rows, some of which are changes to existing rows and some of which are new rows.

Sobre esta tarefa - About this task

Você pode atualizar os dados existentes e inserir novos dados em uma única operação usando a instrução MERGE.
You can update existing data and insert new data in a single operation by using the MERGE statement.

Por exemplo, um aplicativo pode solicitar um conjunto de linhas de um banco de dados, permitir que um usuário modifique os dados por meio de uma GUI e, em seguida, armazenar os dados modificados no banco de dados.
Alguns desses dados modificados são atualizações de linhas existentes e alguns desses dados são novas linhas.
Você pode fazer essas operações de atualização e inserção em uma única etapa.

For example, an application might request a set of rows from a database, enable a user to modify the data through a GUI, and then store the modified data in the database.
Some of this modified data is updates to existing rows, and some of this data is new rows.
You can do these update and insert operations in one step.

Para atualizar os dados existentes e inserir novos dados, especifique uma instrução MERGE com as cláusulas WHEN MATCHED e WHEN NOT MATCHED.
Essas cláusulas especificam como o Db2 lida com dados correspondentes e não correspondentes.
Se o Db2 encontrar uma linha correspondente, essa linha será atualizada. Se o Db2 não encontrar uma linha correspondente, uma nova linha será inserida.

To update existing data and inserting new data, specify a MERGE statement with the WHEN MATCHED and WHEN NOT MATCHED clauses.
These clauses specify how Db2 handles matched and unmatched data.
If Db2 finds a matching row, that row is updated.
If Db2 does not find a matching row, a new row is inserted.

Exemplo: - Example:

Suponha que você precise atualizar o estoque em uma concessionária de automóveis.
Você precisa adicionar novos modelos de carro ao estoque e atualizar as informações sobre os modelos de carro que já estão no estoque.
Suppose that you need to update the inventory at a car dealership.
You need to add new car models to the inventory and update information about car models that are already in the inventory.

Você pode fazer essas alterações com a seguinte série de declarações:
You could make these changes with the following series of statements:

    UPDATE INVENTORY
       SET QUANTITY = QUANTITY + :hv_delta
     WHERE MODEL    = :hv_model;

   --begin pseudo code
   if sqlcode >= 0  
   then do   
        GD
        if rc = 0  then INSERT..
        end                         
   -- end pseudo code

   GET DIAGNOSTICS :rc = ROW_COUNT;
 
   IF rc = 0 THEN
      INSERT INTO INVENTORY 
           VALUES (:hv_model, :hv_delta);
   END IF;

A instrução MERGE simplifica a atualização e a inserção em uma única instrução:
The MERGE statement simplifies the update and the insert into a single statement:

MERGE INTO INVENTORY
   USING ( VALUES (:hv_model, :hv_delta) ) AS SOURCE(MODEL, DELTA)
   ON INVENTORY.MODEL = SOURCE.MODEL
      WHEN MATCHED THEN UPDATE SET QUANTITY = QUANTITY + SOURCE.DELTA
      WHEN NOT MATCHED THEN INSERT VALUES (SOURCE.MODEL, SOURCE.DELTA)
   NOT ATOMIC CONTINUE ON SQLEXCEPTION;
  • Selecting values while merging data
    Ao atualizar os dados existentes e inserir novos dados em uma única operação de mesclagem, você pode selecionar valores dessas linhas ao mesmo tempo.
    When you update existing data and insert new data in a single merge operation, you can select values from those rows at the same time.

Tópico pai: Inserting data into tables


© Copyright IBM Corp.