[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