Página 1 de 1

Comando MERGE

Enviado: Seg, 29 Jun 2015 1:27 pm
por feliperdonatti
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 ?

Re: Comando MERGE

Enviado: Sex, 31 Jul 2015 12:14 pm
por DanielNN
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);

Re: Comando MERGE

Enviado: Qui, 17 Set 2015 9:25 pm
por thrrent
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.