none
MERGE (T-SQL) com delete na origem apenas do que não foi executado o merge (fora do domínio de dados a alterar) RRS feed

  • Pergunta

  • É possível pelo comando T-SQL MERGE  executar o delete na tabela original (tabela source) quando a informação "was matched" ou não, deixando apenas os dados que não tiveram nenhum merge na source?

    Como fazer?


    TFS erro

    terça-feira, 25 de fevereiro de 2014 19:42

Respostas

  • Bruno,

    Utilizar dois "matched" não é possível, mas você pode incluir mais de uma condição no mesmo "matched". Veja no exemplo abaixo:

    MERGE
    SuaTabelaDestino AS target
    USING 
    SuaTabelaOrigem AS source ON (target.CD_CLIENTE = source.CD_CLIENTE)
    WHEN MATCHED AND (source.DT_COMPRA > target.DT_COMPRA) THEN
      --INSERT 
    WHEN NOT MATCHED THEN
      --DELETE

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    sexta-feira, 28 de fevereiro de 2014 16:26
    Moderador

Todas as Respostas

  • José 

    Uso o MERGE com o delete para casos semelhantes... só que dessa vez preciso deletar da "source" os dados que foram "matched"... na verdade preciso de dois comandos quando ocorrer o matched. Você já viu algum conteúdo que execute assim, uma procedure, etc.?

    Obrigado.


    TFS erro

    quarta-feira, 26 de fevereiro de 2014 19:30
  • Bruno,

    Utilizar dois "matched" não é possível, mas você pode incluir mais de uma condição no mesmo "matched". Veja no exemplo abaixo:

    MERGE
    SuaTabelaDestino AS target
    USING 
    SuaTabelaOrigem AS source ON (target.CD_CLIENTE = source.CD_CLIENTE)
    WHEN MATCHED AND (source.DT_COMPRA > target.DT_COMPRA) THEN
      --INSERT 
    WHEN NOT MATCHED THEN
      --DELETE

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    sexta-feira, 28 de fevereiro de 2014 16:26
    Moderador