[firebase-br] Otimização de Transação

Sandro Souza escovadordebits em gmail.com
Dom Dez 6 07:52:22 -03 2009


Bom dia/tarde Renato.

Grande Renato, sim, fica bem melhor, tanto que eu já alterei o sistema 
em PHP aqui para efetuar sempre exclusões "lógicas".

Em 99% das tabelas do sistema, eu acrescentei 6 campos:

1 - Código do usuário que incluiu o registro.
2 - Data e hora da inclusão.
3 - Código do usuário que alterou o registro por último.
4 - Data e hora da última alteração.
5 - Código do usuário que excluiu o registro.
6 - Data e hora da exclusão.

Nesse caso, os 4 primeiros campos são obrigatórios, mas os 2 últimos são 
apenas preenchidos quando o usuário exclui o registro pelas páginas em 
PHP, e nessa nova situação, o registro fica "logicamente excluido", 
lembrando os jurássicos arquivos DBFs do Clipper/dBase, que também tem 
um byte por registro que funciona como flag de exclusão.

Até para saber quem excluiu o quê fica fácil, além de também ser fácil 
"ressucitar" os registros excluídos.

Como fiz uma classe de "motor de cadastro", ficou fácil, pois 
acrescentei essa funcionalidade na classe, e automaticamente todos os 
cadastros (instâncias dessa mesma classe) já ganharam esse recurso.

De qualquer forma, a rotina para o caso anterior já está pronta, e como 
não haverá mais "buracos de código" nessa nova filosofia, minha classe 
não perderá mais tempo tentando encontrar as brechas, pois quando 
comparar o "MAX(CampoChave)" com o "Count(*)", saberá que não há 
brechas, e já calcula o próximo valor a ser utilizado imediatamente.

Agradeço imensamente pela dica, e foi ótimo ver que os pensamentos 
acabam convergindo para a mesma solução prática. :D

Valeu Renato. :D

Renato Miranda escreveu:
> Sandro, tudo bem ?
>
> Não seria mais simples, para evitar "buracos" na seqüência, em vez de
> excluir o registro, apenas marcá-lo como inativo ?
>
>   




Mais detalhes sobre a lista de discussão lista