Operações de “UPSERT” com o Magic xpi

Veja nesta publicação como executar um UPSERT com o Magic xpi, usando uma única operação

Eventualmente em lógicas de manipulação de dados, pode ser necessário executar uma ação que tradicionalmente se chama de UPSERT:

“… localizar uma informação e se ela existir, atualizá-la. Se não existir, criá-la …”

Tradicionalmente em projetos Magic xpi isso pode ser feito com 3 operações (DataMappers) distintas, numa construção semelhante a esta:

 

O que pode ter passado despercebido por muitos desenvolvedores da plataforma, é que desde a versão 4.9 do Magic xpi o DataMapper possui uma opção UPSERT que executa esta mesma ação em um única operação (comando DML).

É muto simples usuá-la.

Após definir o esquema “DataBase” no destination* do DataMapper defini-se o flagUpsert” como TRUE:

*Nota: opção válida somente para DBs em "destination" no DataMapper

 

Com este flag definido, o assistente automaticamente exibe a opção UPSERT ao invés das tradicionais INSERT, UPDATE ou DELETE, e libera para as demais configurações do comando/instrução:

 

Ao final, o comando DML gerado será o MERGE:

 

Outra mudança inportante é que para um único UPSERT o DataMapper vai exibir sempre duas (e não uma) opções de mapeamento de informações no destino:

INSERT = para executar quando a informação não for encontrada, e é necessário criá-la.

UPDATE = para o outro caso, executar quando a informação é localizada e deve ser atualizada.

Desta forma, toda a operação de buscar/incluir/atualizar pode ser executada com um único comando DML no BD, o que certamente traz benefícios de performance em grandes volumes de dados e quantidade repetida desta mesma instrução.

 

*Nota: a operação UPSERT nos DataMappers do Magic xpi é exclusiva para BDs MS-SQLServer

 

Manoel Frederico Silva – Gerente de Tecnologia e Evangelista MAGIC – Magic Brasil
Manoel Frederico Silva – Evangelista MAGIC – Magic Brasil

 

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui

Deixe um comentário

O seu endereço de e-mail não será publicado.