Comando MERGE

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
feliperdonatti
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qui, 26 Jan 2012 8:18 am

Bom dia Pessoal,

Estou com uma dúvida referente ao comando MERGE entre duas tabelas que estão servindo para integração de sistemas. Tenho a seguinte situação:

1- Os registros que estão em uma tabela chama AUTORIZADOS_RP e que não estão na tabela USUARIOS deverão ser inseridos na tabela USUARIOS ( Até aqui tudo bem )

2- Os registros que estão na tabela USUARIOS e não estão na tabela AUTORIZADOS_RP deverão ter seu status alterado para "EXCLUIDO".

Pelo que vi no comando MERGE, você consegue fazer a comparação do conteudo de uma tabela com outra (tabela1 -> tabela2), porém preciso fazer a comparação nas 2 vias(tabela1 <-> tabela2). É possível contemplar as 2 situações em um comando ?
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Não vejo forma do MERGE lhe atender nesta situação.

Acredito que você deva se utilizar de dois comandos e sem uso do merge.

1-

Selecionar tudo

INSERT INTO USUARIOS
SELECT 
  FROM AUTORIZADOS_RP
WHERE NOT EXISTS( SELECT 1 FROM USUARIOS
                  WHERE USUARIOS.CHAVE = AUTORIZADOS_RP.CHAVE);
2-

Selecionar tudo

UPDATE USUARIOS
      SET STATUS = "EXCLUIDO"
 WHERE NOT EXISTS( SELECT 1 FROM AUTORIZADOS_RP
                   WHERE AUTORIZADOS_RP.CHAVE = USUARIOS.CHAVE);
thrrent
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Dom, 29 Jan 2012 5:28 pm
Localização: Rio de Janeiro

Oi amigo, boa noite.

Como o DanielInn disse, pode-se usar subqueries ou também pode-se utilizar o camando "minus" para este caso, dessa forma você saberá a diferença de registros entre uma tabela e outra e executar o comando insert ou update com o retorno da query.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes