Trigger para delete e update ao ser alterado um campo da tabela
Olá, sou novo no forum, achei muito interessante as informações por aqui, espero poder ajudar a comunidade e aprender bastante também.
Estou tentando configurar um trigger para ser rodado quando uma tabela é atualizada (gostaria que o trigger fosse rodado apenas quando um campo específico da tabela passa de 2) e neste momento ele teria que rodar um delete primeiro (para casos em que o processo já tinha sido efetuado e os valores foram alterados) seguido de um insert.
Quase não tenho conhecimento de sql além de simples selects, updates, etc... Estou dando uma estudada e pesquisando bastante, porém surgiu uma urgência na implantação deste comando e não estou conseguindo achar nenhum exemplo prático para me basear, qualquer sugestão é bem vinda. Abaixo o caso:
tenho uma TBL_COMPRAS_NOTAFISCAL_ENTRADA em que quando o campo status nela for alterado pra 2 ele deveria fazer um delete e depois um insert na TBL_CONTABIL_LANCAMENTOS_CTB pegando informações da TBL_CUSTOS_DESDOBRADOS usando o select abaixo:
SELECT A.CD_LANCAMENTO, A.CD_ORIGEM, 1 NR_PARCELA, 1 CD_ITEM_PARCELA, A.CD_EMPRESA, B.CD_FILIAL, D.CD_CONTA_CTB CD_CONTA_DEBITO, C.CD_CONTA CD_CONTA_CREDITO,
D.CD_HISTORICO, A.DT_LANCAMENTO, NULL DS_COMPLEMENTO , B.NR_DOCUMENTO, SUM(A.VL_CUSTO) AS VL_LANCAMENTO, A.DS_NOME_FORMULARIO DS_TEXTO, A.CD_USUARIO,
NULL CD_CHAVE, A.CD_USUARIOAT, B.DT_CADASTRO, B.DT_ATUALIZACAO, A.CD_LANCAMENTO, B.CD_FORNECEDOR, 1 NR_PARCELAS, 'Desdobramento NF entrada' DS_OBS FROM
TBL_CUSTOS_DESDOBRADOS A, TBL_COMPRAS_NOTAFISCAL_ENTRADA B, TBL_CONTABIL_PLANO_CONTAS C, TBL_CONTABIL_PLANO_CONTAS_GERENCIAL D, TBL_ENTIDADES E
WHERE A.CD_LANCAMENTO = B.CD_ENTRADA AND A.CD_CONTA_GERENCIAL = D.CD_CONTA_GERENCIAL AND B.CD_FORNECEDOR = E.CD_ENTIDADE AND
A.CD_EMPRESA = D.CD_EMPRESA AND E.NR_CPFCNPJ = C.NR_CPFCNPJ AND C.CD_CONTA > 500000 AND A.CD_EMPRESA = C.CD_EMPRESA AND A.CD_LANCAMENTO = @cdlanc
GROUP BY A.CD_LANCAMENTO, A.CD_ORIGEM, A.CD_EMPRESA, B.CD_FILIAL, D.CD_CONTA_CTB, C.CD_CONTA,
D.CD_HISTORICO, A.DT_LANCAMENTO, B.NR_DOCUMENTO, A.DS_NOME_FORMULARIO, A.CD_USUARIO, A.CD_USUARIOAT,
B.DT_CADASTRO, B.DT_ATUALIZACAO, B.CD_FORNECEDOR
O "@CDLANC" viria da primeira tabela, do lançamento em que é alterado o status pra 2, porém não sei como declarar isso exatamente (para que ele não execute o processo em todas cada vez que há a alteração de status, o que ia demorar bastante...)
Qualquer dica, orientação ou sugestão é muito bem vindaDiscussão (0)
Carregando comentários...