Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandre Becker

trigger de estoque no postgre.....

Recommended Posts

ola..... tenho om bd com os seguintes dadostabela estoque(sequencia serial,empresa integer,produto integer,data date,quantidade double precision,serie integer,documento varchar(10))esta tabela eh a entrada de estoque geral........ item a item..... lancados diariamentee uma tabelatabela estoqueemp(codempresa integer,coditem integer,quantidadetotal)esta tabela eh o estoque geral de cada item por empresao q eu kero eh q quando for gravado um item na tabela primaria de estoqueele atualize com uma triger a segunda tabela...... ou seja.... a partir do item q entrou ex item 1 empresa 1eu faça um sum(quantidade) na tabela de estoque e atualize a estoquetemp com o valordesta soma....ja tentei de N formas..... mas tá dificil no PG no firebird era muito simples e aki nao estou conseguindoalguem pode me passar uma trigger que funcione bem para as tabelas acima?utilizo a versao 8.2 para windows.......

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE OR REPLACE FUNCTION atualizaestoque(emp integer, item integer, ent char(1), sai char(1))RETURNS double precision AS 'DECLARE entradas double precision; saidas double precision;BEGIN entradas := (select sum(quant) from estoque where prodid=item and empid=emp and entsai=ent); saidas := (select sum(quant) from estoque where prodid=item and empid=emp and entsai=sai); IF entradas is NULL THEN entradas:=0; END IF; IF saidas is NULL THEN saidas:=0; END IF; delete from estoqueemp where empid=emp and prodid=item; insert into estoqueemp values(item, emp, entradas-saidas); RETURN entradas-saidas;END;' LANGUAGE plpgsql;select atualizaestoque(1,1,'E','S');bem esta function roda legal.....o problema eh o seguinte...... eu tenho q chamar ela do sistema com os parametros praficar ok..... NA TRIGGER :( nao consegui ainda chamar com parametros...... e nao consigo criarum function trigger com parametros no PG.........vamo lá moçada!!!..... alguem sabe????

Compartilhar este post


Link para o post
Compartilhar em outros sites

RSRSRSRS....... eh por isto q eu gosto de vir aki perguntar..... é o mesmo caso de abrir a geladeira pra pensar RSRSRS..........aki vai a respostaCREATE OR REPLACE FUNCTION atualizaestoque() RETURNS "trigger" AS$BODY$DECLARE entradas double precision; saidas double precision;BEGIN entradas := (select sum(quant) from estoque where (prodid=new.prodid) and (empid=new.empid) and (entsai=(character(1) 'E'))); saidas := (select sum(quant) from estoque where (prodid=new.prodid) and (empid=new.empid) and (entsai=(character(1) 'S'))); IF entradas is NULL THEN entradas:=0; END IF; IF saidas is NULL THEN saidas:=0; END IF; delete from estoqueemp where empis=new.empid and prodis=new.prodid; insert into estoqueemp values(new.prodid,new.empid, entradas-saidas); RETURN NULL;END;$BODY$ LANGUAGE 'plpgsql' VOLATILE;CREATE TRIGGER atualizaestoque AFTER INSERT ON estoque FOR EACH ROW EXECUTE PROCEDURE atualizaestoque('prodid', 'empid');no meu caso funciona 100%ae criei uma nova funcao para um trigger de delecao com variaveis old.nome no lugar q funciona com deleçao tbem ok...... ja q nao tenho update em tabela de estoque... aki ficou tudo ok...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.