Trigger para dar baixa em previsões
Boa tarde sou novo no forum e estou precisando da ajuda de todos vocês.
Estou precisando de uma trigger que de baixa nosvalores armazenados em uma tabela referente a vendas pois o senario é o seguinto:
tabela
Codigo da venda Data da Venda Valor Total
145 01/07/2009 R$ 150,25
146 01/07/2009 R$ 250,33
Como são varias vendas com a mesma data tem como eu dar baixa nelas para a tebela de movimentação pela data por exemplo eu tenho 50 vendas no dia 01/07/2009 quando eu receber os valores correspondentes a essas vendas se eu for dar baixa uma por uma vai demorar muito porisso que eu estava querendo por data .
Alguem pode me ajudar.
Sem mais obrigado pela atenção.
Wlwbm
Curtidas 0
Respostas
Jair Bg
01/07/2009
A Trigger vai ser disparada quando? inclusão, alteração antes, depois?
PS não é como no SQL-Server...
caso queira fazer a atualização por data é melhor criar só o procedimento
PS não é como no SQL-Server...
caso queira fazer a atualização por data é melhor criar só o procedimento
GOSTEI 0
Wlwbm
01/07/2009
Bom dia jair BG obrigado por responder.
Então é que eu trabalho num presidio e é passada uma folha com itens para os sentenciados comprarem ai essa folhas voltam ai eu tenho que pegar e fazer a venda no sisteminha que eu estou criando aqui esta com 1445 sentenciados, apos entregar as mercadorias sempre ou falta algum item ou o sentenciado não quer mais.
Porisso eu estou precisando de uma Store Procedure que pegue todas as vendas feitas na data 00/00/2009 e mande para a tabela de movimentção.
Eu acho que vou ter que chamar a procedure pois para que ela fassa isso.
Você pode me dar uma luz.
Obrigado pela atenção.
GOSTEI 0
Jair Bg
01/07/2009
Bom Dia existem muitas maneiras de fazer uma procedure para isso
exemplos é o que não falta, procure um que melhor se adapta a sua necessidade, exemplo para isso seria (+-) assim
CREATE OR REPLACE FUNCTION proc_atual_movimento(data_ini date, data_fin_date) RETURNS void AS
$BODY$
...
INSERT¨INTO movimentacao (campos...)
SELECT campos....
FROM VENDAS
WHERE (data BETWEEN data_ini AND data_fin)
...
return ´´;
end;
$BODY$
LANGUAGE ´plpgsql´ VOLATILE
Não tenho aqui dados o suficiente para apresentar algum resultado..
ative a função numa chamada
SELECT proc_atual_movimento(´2009-01-01´, ´2009-12-31);
deu para similar?
exemplos é o que não falta, procure um que melhor se adapta a sua necessidade, exemplo para isso seria (+-) assim
CREATE OR REPLACE FUNCTION proc_atual_movimento(data_ini date, data_fin_date) RETURNS void AS
$BODY$
...
INSERT¨INTO movimentacao (campos...)
SELECT campos....
FROM VENDAS
WHERE (data BETWEEN data_ini AND data_fin)
...
return ´´;
end;
$BODY$
LANGUAGE ´plpgsql´ VOLATILE
Não tenho aqui dados o suficiente para apresentar algum resultado..
ative a função numa chamada
SELECT proc_atual_movimento(´2009-01-01´, ´2009-12-31);
deu para similar?
GOSTEI 0
Wlwbm
01/07/2009
jair BG Boa Tarde obrigado por responder
ficara assim
CREATE OR REPLACE FUNCTION proc_atual_movimento(data_ini date, data_fin date) RETURNS void AS $BODY$ BEGIN INSERT INTO movimentacaobancaria(cont_matricula, mvb_datalancamento, mvb_debito, mvb_historico) VALUES (NEW.cont_matricula, NEW.data_venda_cab, NEW.total_venda_cab, ´VENDA PECULIO´); SELECT cod_venda_cab, cont_matricula, cod_funcionario, data_venda_cab, vlr_venda_cab, total_venda_cab FROM venda_cab_movimentacao WHERE (data_venda_cab BETWEEN ata_ini AND data_fin ); RETURN; END; $BODY$ LANGUAGE ´plpgsql´ VOLATILE
Duvida não vai ter que ter uma condição por exemplo if para selecionar o perido das datas.
Assim a procedure vai varrer a tabela inteira.
Obrigado pela Atenção.
GOSTEI 0