none
Trigger para Inserir e Atualizar registros de um banco origem --> banco destino RRS feed

  • Pergunta


  • Tenho um banco de dados com as tabelas normalizadas e outra aplicação antiga com um banco não normalizado.
    Preciso criar uma TRIGGER para ao ser inserido ou atualizado um registro em uma tabela do banco de origem 
    (normalizado) eu possa inserir alguns dados desse registro no meu banco de destino (não normalizado - banco TANK).

    Quero solicitar a ajuda dos colegas para me orientar se existe alguma forma melhor de fazer isso ou
    se estou no caminho certo.

    A principio criei um Trigger em que testo se há alguma atualização dos campos e se não houver realizo um 
    INSERT na tabela do banco TANK.

    CREATE TRIGGER [dbo].[TriggerUpdateInsert] ON [dbo].[TABELA_ORIGEM] 
    AFTER INSERT, UPDATE 
    AS

    DECLARE @QtdeRows INT

    BEGIN
      UPDATE [BANCO_TANK]..[TABELA_DESTINO]
      SET CAMPO_1 = TABELA_ORIGEM.CAMPO_1
      WHERE
        TABELA_ORIGEM.CAMPO_CHAVE = TABELA_DESTINO.CAMPO_CHAVE
      SET @QtdeRows = @@ROWCOUNT

      UPDATE [BANCO_TANK]..[TABELA_DESTINO]
      SET CAMPO_2 = TABELA_ORIGEM.CAMPO_2
      WHERE
        TABELA_ORIGEM.CAMPO_CHAVE = TABELA_DESTINO.CAMPO_CHAVE
      SET @QtdeRows = @@ROWCOUNT
     
      -- Se UPDATE não encontrou registro para ser atualizado, insere registro na tabela tank.
      IF ( @QtdeRows = 0 )
       BEGIN
         INSERT INTO [BANCO_TANK]..[TABELA_DESTINO]
         SELECT 
    CAMPO_1,
    CAMPO_2,
         FROM TABELA_ORIGEM1
         LEFT JOIN TABELA_ORIGEM2 ON
           TABELA_ORIGEM1.CAMPO_CHAVE = TABELA_ORIGEM2.CAMPO_CHAVE
       END
    quinta-feira, 25 de outubro de 2018 18:09

Respostas