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 flag “Upsert” 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
Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui