[firebase-br] Stored Procedure
Reijanio Nunes Ribeiro
rnribeiro em gmail.com
Sáb Jul 21 10:18:11 -03 2007
me tirem uma duvida com um sistema assim cheio de triggers e sp's fica quase
impossível criar um sistema multibanco correto ou errado meu pensamento,
pois estou desenvolvendo um sistema que serve pra estudo e podera ser usado
em alguma empresa tbm, e ele n tem uma trigger nem procedure, pois gostaria
de ver ele funcionando com outros bancos tbm ou estou errado n usando estas
funcionalidades do banco, agradeço a quem puder me responder
Em 20/07/07, Sérgio Luiz Krüger <sergio.luiz.kruger em gmail.com> escreveu:
>
>
> Boa noite,
>
> Obrigado pela ajuda, mas como voce controla na procedure update o caso
> de duas estações estarem alterando o mesmo registro ? Se eu fizer uma
> procedure update simples atualizando todos os campos que foram
> acessados/alterados por uma estação, corro o risco de perder dados que
> foram
> alterados em outra estação. É feito algum lock quando o usuário começa a
> alterar o registro na tela ? Ou vc passa os valores antigos e novos para a
> stored procedure gerar um comando update apenas do que foi alterado pelo
> usuário ?
>
> O que eu estou querendo fazer é criar uma "camada" de procedimentos no
> banco de dados pra fazer manutenção em suas tabelas, tirando o máximo
> possível a dependência de componentes e evitando assim de ter que ficar
> escrevendo SQL dentro da aplicação. Fazendo dessa forma, acredito que a
> aplicação poderia ser feita em Delphi, .Net, Java, etc, desde que a
> linguagem suporte execução de stored procedures e ficando dessa forma,
> padronizado o acesso aos dados. O problema é que eu não sei qual o padrão
> que o pessoal utiliza, e tenho medo de começar a escrever código e no meio
> do projeto, ter que alterar tudo.
>
> Já pesquisei na net e existem casos onde os programadores efetuam um
> select for update quando entram em modo de alteração do registro nas
> estações, mantendo o registro "lockado" durante a fase de edição, evitando
> assim o problema de duas pessoas alterando o mesmo registro, porém não sei
> se essa é uma boa idéia.
>
> Também encontrei casos onde é criada uma coluna timestamp na tabela que
> é alimentada via trigger e na stored procedure update essa coluna é
> checada
> na
> cláusula where a fim de saber se o registro foi editado por outra estação
> enquanto voce estava alterando-o, fazendo com que o update falhe e o
> usuário
> seja obrigado a reiniciar a transação.
>
> Sei que devem existir outras formas de se fazer isso, mas eu gostaria
> de
> saber quais são as melhores práticas, seus pontos a favor e contra pra
> poder
> adotar uma delas e tocar o projeto.
>
> Acredito que a maioria aqui usa Delphi pra acessar o Firebird. Será que
> todo mundo usa escrever SQL dentro de componentes ? Essa é realmente a
> melhor prática ? Se quiserem passar pra Java ou mesmo trocar de banco de
> dados, reescrevem todo o SQL dentro de componentes de novo ?
>
> Desculpe-me pelo longo e-mail, mas é que trabalho atualmente com Visual
> Dataflex, e estou tentando converter minhas aplicações para banco de
> dados,
> e já estou cançado de ficar dependente de uma linguagem ou banco, por
> isso,
> procuro uma forma de fazer com que as coisas fiquem mais portáveis e
> independentes uma da outra.
>
> Abraços.
>
> Sérgio Luiz Krüger
>
>
> ----- Original Message -----
> From: "paulosxs Yahoo!" <paulosxs em yahoo.com.br>
> To: <lista em firebase.com.br>
> Sent: Friday, July 20, 2007 7:05 PM
> Subject: Re: [firebase-br] Stored Procedure
>
>
> Em meus aplicativos adotei como padrão a interface com o BD sempre
> através de procedures. No caso dos componentes que utilizo, a transação
> é controlada automaticamente durante a execução da procedure. Quando se
> trata de uma procedure com um comando simples, os locks são gerenciados
> internamente pelo Fb. Pode ocorrer algum problema no caso de procedures
> complexas, que envolvam atualizações em várias tabelas, mas mesmo nesses
> casos nunca precisei me procupar com os locks.
>
> > Date: Fri, 20 Jul 2007 09:54:17 -0300
> > From: Sérgio Luiz Krüger <sergio.luiz.kruger em gmail.com>
> > Subject: [firebase-br] Stored Procedure
> > To: "FireBase" <lista em firebase.com.br>
> > Message-ID: <004201c7cacd$1879cb50$3200a8c0 em SERGIO>
> > Content-Type: text/plain; charset="iso-8859-1"
> >
> > Bom dia,
> >
> > Algúem da lista utiliza stored procedures para fazer
> > insert/update/delete ?
> >
> > Como funciona no caso do update ? É utilizada alguma forma de lock
> de
> > registro antes de executar a stored procedure update ou a lógica de
> > tratamento multi-usuários é tratada dentro da própria stored procedure ?
> >
> > Alguém poderia comentar as suas experiências ou ajudar com algum
> > exemplo ?
> >
> > Obrigado.
> >
> > Sérgio Luiz Kruger
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista