ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Duvida com trigger postgre?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Ago 13, 2018 8:58 am    Assunto: Duvida com trigger postgre? Responder com Citação

Tenho uma trigger que dispara no after update de uma tabela chamada grade

Código:
CREATE OR REPLACE FUNCTION public.tg_grade_up() RETURNS trigger AS
$BODY$DECLARE id_grade_old BIGINT;
DECLARE qtd_old DECIMAL(10, 2);
DECLARE qtd_new DECIMAL(10, 2);
DECLARE id_usuario_op BIGINT;
DECLARE id_cadastro_old BIGINT;

BEGIN id_grade_old = OLD.id_grade;

qtd_old = OLD.qtd_atual;

qtd_new = NEW.qtd_atual;

id_usuario_op = NEW.id_usuario_alterou;

id_cadastro_old = OLD.id_cadastro;

IF id_usuario_op IS NOT NULL
AND ((OLD.codigo_barra != NEW.codigo_barra)
     OR (OLD.qtd_atual != NEW.qtd_atual)
     OR (OLD.valor_custo != NEW.valor_custo)
     OR (OLD.valor_varejo_aprazo != NEW.valor_varejo_aprazo)
     OR (OLD.ativo != NEW.ativo)
     OR (OLD.valor_atacado_aprazo != NEW.valor_atacado_aprazo)) THEN
INSERT INTO grade_historico(id_cadastro, id_grade, id_usuario, qtd_antigo, qtd_atual, codigo_barra_antigo, codigo_barra, valor_custo_antigo, valor_custo, valor_varejo_aprazo_antigo, valor_varejo_aprazo, ativo_antigo, ativo, data_hora_alteracao, valor_atacado_aprazo_antigo, valor_atacado_aprazo, origem_alteracao)
VALUES(id_cadastro_old,
       id_grade_old,
       id_usuario_op,
       qtd_old,
       qtd_new,
       OLD.codigo_barra,
       NEW.codigo_barra,
       OLD.valor_custo,
       NEW.valor_custo,
       OLD.valor_varejo_aprazo,
       NEW.valor_varejo_aprazo,
       OLD.ativo,
       NEW.ativo,
       NOW(),
       OLD.valor_atacado_aprazo,
       NEW.valor_atacado_aprazo,
       'OFF');

END IF;

RETURN NEW;

END;$BODY$
LANGUAGE plpgsql VOLATILE NOT LEAKPROOF
COST 100;


Ela é populada na tabela grade_historico com os valores.

Minha duvida é que no ultimo campo origem_alteracao chumbei OFF e preciso que se for uma venda na hora de disparar a trigger colocar o numero da venda que foi executado a origem e não ficar chumbado este OFF.
A trigger é disparada na venda a cada item da tabela venda_itens que é inserido, não sei como posso fazer isso quando vem deste local, o campo é id_venda que esta na tabela venda_itens.

Alguma dica?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB