[firebase-br] Como posso fazer essa procedure
Marcelo Papuska
krpmate em gmail.com
Ter Fev 26 18:25:07 -03 2008
Ola, pelo que entendi, voce esta precisando uma procedure que atualize o
campo atual_cota na tabela de usuarios, certo ?
bem, se for isto vamos aos fatos.
Seria melhor, voce criar uma trigger que atualiza-se o campo a cada compra.
quando a SP, seria executada quando vc emite o relatorio ou consulta por
usuario (verifique bem os seus indices).
Pergunta 1: As cotas sao mensais ou anuais?
Pergunta 2: Como estao os indices da tabela de compra ?
Bem, seria interessante vc ter um indice na tabela de compras por
(DATA_COMPRA,USUARIO) , isto ira agilizar nosso processo.
Opcao 1: Cotas Anuais.
update usuario
set atual_cota = coalesce((select sum(compras.valor_compra) from compras
where extract(year from compras.data_compra) =
:ano
and compras.usuario = usuario.codigo_usuario
),0)
where tipo_usuario = 'Comprador' // se vc nao tiver tipo de usuario, remova
esta linha.
Opcao 2: Cotas Mensais (basicamente e o mesmo mas devemos colocar o mes
tb.)
update usuario
set atual_cota = coalesce((select sum(compras.valor_compra) from compras
where extract(year from compras.data_compra) =
:ano
and extract(month from compras.data_compra) =
:mes
and compras.usuario = usuario.codigo_usuario
),0)
where tipo_usuario = 'Comprador' // se vc nao tiver tipo de usuario, remova
esta linha.
Na opcao1, vc tera que passar apenas o Ano, ja na 2 ano e mes
vc pode incrementar o comando, passando o usuario mas isto vai depender da
tua necessidade.
Volto a recomendar a Trigger no seu caso.
Espero ter ajudado.
Abracao.
Mais detalhes sobre a lista de discussão lista