Maikel, a idéia da Tabela Historico é genial. Costumamos pensar nela como
uma shadow-table que funciona como uma "lixeira" tudo que é feito na tabela
principal, antes é registrado na tabela-sombra. Assim qualquer exclusão ou
alteração indevida poderá ser "voltada" para trás (rolled-back). Mas isso é
uma outra questão.

Foi boa sua colocação acerda da PK (um id auto-incremented) da tabela de
lancamento. Estou dando uma estudada na escrita de Triggers com PL/pgSQL e
mais tarde vou postar minha solução de atualização dos saldos. (fiz uma
simulação de tabela aqui - baseado no que vc informou).

MN.

Em 22/02/07, Maikel Dal Farra <[EMAIL PROTECTED]> escreveu:

Como essa tabela tem um campo chamado  id (serial) que é a pk, eu tava
pensando em alterar os registros >= (data+id) do registro "mexido". Para
efeito de relatório não deve alterar a data do lancamento, mas eu pensei em
guardar essas alterações em outra tabela histórico.  Que vc acha Marcos?

Valeu.

------------------------------
From:  *"marcos nobre" <[EMAIL PROTECTED]>*
Reply-To:  *Grupo de Usuários do PostgreSQL no Brasil<
[email protected]>*
To:  *"Grupo de Usuários do PostgreSQL no Brasil"<
[email protected]>*
Subject:  *Re: [PostgreSQL-Brasil] Atualização de campos*
Date:  *Thu, 22 Feb 2007 12:01:00 -0300*

Opa, encaminhei sem querer. Naum completei minha dúvida, entaum segue
denovo.

Em 22/02/07, marcos nobre <[EMAIL PROTECTED]
> escreveu:
>
> ok.
> Seja qual for o lancamento que algum usuário estiver mexendo, o trigger
> terá que ser disparado AFTER UPDATE e a programação ( o conteúdo) do trigger
> com certeza faz acesso aos dados do registro que está sendo afetado (no
> mínimo a PK do registro) daí tendo-se acesso a Data do Lancamento o barato é
> desenvolver um UPDATE que atualize saldo de qualquer lançamento com data
> superior à deste que foi "mexido".
>
>
> Mas há 2 casos a se considerar (ainda):
> a) O Saldos dos registros de mesma data a do registro que foi mexido;
> b) O Saldos dos registros seguintes, ou seja, daqueles que tem data
> superior a do registro que foi mexido.
>
>
> Porém ainda resta uma dúvida: O programa (do teu sistema) que permite
> que um lançamento seja modificado, permite inclusive que seja modificada
> a data de um lançamento ?
>

Isso faz uma forte diferença porque determina que o trigger ao invés de
recalcular saldo mediando entre antes e depois do lançamento, poderia fazer
um recalculo geral ! Sacou ? Esse procedimento pode ser mais fácil de ser
desenvolvido, bastando para tal fazer uma análise de custo x benefício,
levando-se em consideração:

1) Será que este programa de Alteração de Lançamentos vai ser muito
utilizado?
2) Porque não gerar um lançamento de mesma data com valor contrário (para
matar/anular o errado) e inserir o lançamento correto ? Contabilmente isso é
bem correto e em termos de sistema, fica bem documentado o erro de
lançamento.

3) Quantos milhoes de lançamentos conterão essa tabela? E que tal fazer um
recalculo de saldo a partir do dia 1 do mes do lançamento errado (isso
diminui a agressividade do trigger) ?

MN.

 Em 22/02/07,
> Maikel Dal Farra
> <[EMAIL PROTECTED]> escreveu:
> >
> >   Caro Marcos Nobre
>
> Isso mesmo, a tabela é assim. Como o Wallace disse acho que seria um
> trigger, mas a minha dúvida era em como atualizar somente os saldos após o
> lançamento, não mexendo nos saldos anteriores, ou seja, uma forma de
> corrigir um lançamento errado, entendem?
>
>  Obrigado pelo retorno de vcs.
>
>  ------------------------------
>  From:  *"marcos nobre" <
> [EMAIL PROTECTED]>*
> Reply-To:  *Grupo de Usuários do PostgreSQL no 
Brasil<[email protected]
>
> >*
> To:  *"Grupo de Usuários do PostgreSQL no 
Brasil"<[email protected]
> *
> *>*
> Subject:  *Re: [PostgreSQL-Brasil] Atualização de campos*
> Date:  *Thu, 22 Feb 2007 10:34:34 -0200*
>
>
Xovê se entendi.

Pelo que parece em sua tabela de lançamentos, cada linha (lancamento em
sí) traz o "saldo até então", algo do tipo


data-----lcmto---D_C-----saldo
04/02---10,00---C---------10,00
 04/02---8,00-----C---------18,00
 04/02---1,00-----D---------17,00
 05/02---4,00-----C---------21,00
08/02---1,00-----C---------22,00
 08/02---18,00---D---------4,00
 09/02---20,00---C---------24,00

 Se for esse o caso, estou pensando em um DML para te encaminhar.
Caso não seja, esclareça melhor essa tua tabela de lançamentos.
Imaginei que tua tabela deva conter uma data e que possa existir
lançamentos a debito e a credito.


MN.


 Em 22/02/07, Wallace Reis < <[EMAIL PROTECTED]>
[EMAIL PROTECTED]> escreveu:

> -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Maikel Dal Farra wrote:
> Boa tarde, gostaria que alguém me ajudasse com um probleminha..
> Tenho um tabela  chamada CADSALDO com os seguintes campos:
 > lancamento - numeric (7,2) e valorsaldo - numeric (7,2), (onde o
> saldo anterior é a soma do saldo atual com o lancamento),  preciso que

> ao corrigir um lançamento qualquer na tabela,todos os valorsaldo abaixo

> deste lancamento sejam recalculados.

Um trigger de UPDATE resolve, nao?

*
http://www.postgresql.org/docs/8.2/interactive/triggers.html

* http://www.postgresql.org/docs/8.2/interactive/sql-createtrigger.html


- --
wallace reis
Núcleo de Biologia Computacional e

Gestão de Informações Biotecnológicas/LABBI
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFF3Yb0LZIH+ybRHUMRAscFAKCrNZGuvfIrWtzRysRlAdRKCwvFnQCggtuS

yEaKc1HltqbdRAw2bCvAMOE=
 =dmWF
-----END PGP SIGNATURE-----
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual

http://pgdocptbr.sourceforge.net/


Para editar suas opções ou sair da lista acesse a página da lista em:
 http://pgfoundry.org/mailman/listinfo/brasil-usuarios




--
Consultor em TI
Eng. Sistemas
----------------------------------------------
Keep in your mind:
MS give us Windows,  Linux gives us the whole House.

 >_______________________________________________
>Grupo de Usuários do PostgreSQL no Brasil
>Antes de perguntar consulte o manual
>
http://pgdocptbr.sourceforge.net/
>
>Para editar suas opções ou sair da lista acesse a página da lista em:
>
http://pgfoundry.org/mailman/listinfo/brasil-usuarios


------------------------------
Seja um dos primeiros a testar o novo Windows Live Mail Beta - grátis
Acesse <http://g.msn.com/8HMABRBR/2734??PS=47575> e inscreva-se agora!

_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
 http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
 http://pgfoundry.org/mailman/listinfo/brasil-usuarios



--
Consultor em TI
Eng. Sistemas
----------------------------------------------

Keep in your mind:
MS give us Windows,  Linux gives us the whole House.



--
Consultor em TI
Eng. Sistemas
----------------------------------------------
Keep in your mind:
MS give us Windows,  Linux gives us the whole House.

>_______________________________________________
>Grupo de Usuários do PostgreSQL no Brasil
>Antes de perguntar consulte o manual
>http://pgdocptbr.sourceforge.net/
>
>Para editar suas opções ou sair da lista acesse a página da lista em:
>http://pgfoundry.org/mailman/listinfo/brasil-usuarios


------------------------------
O Windows Live Spaces é seu espaço na internet com fotos (500 por mês),
blog e agora com rede social. Particpe 
também!<http://g.msn.com/8HMABRBR/2746??PS=47575>
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios




--
Consultor em TI
Eng. Sistemas
----------------------------------------------
Keep in your mind:
MS give us Windows,  Linux gives us the whole House.
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a