Re: [firebase-br] Versão de banco de dados

Alexandre Trindade alexandre em habitus.com.br
Sex Jan 27 16:00:04 -03 2006


Pessoal, deixa eu me meter na conversa de vocês....

Estou passando pelo mesmo problema, e até encontrei uma solução que considero ser muito boa, mas estou com um pequeno problema.

Primeiro a solução:

  Mantenho um único executável de atualização, onde dentro dele está o executável mais recente e um script de todas as atualizações do banco de dados. Quando o cliente executa esta atualização, ele checa a versão do executável do sistema, e atualiza apenas se a versão instalada for menor.

Agora vamos ao script.
O script contém todas as atualizações feitas no banco de dados desde o lançamento do sistema. Além disso, tenho uma tabela chamada VERSOES com apenas um campo CODIGO.  Então a estrutura do script é mais ou menos assim:

/* Primeira atualização do sistema */
if exists(select * from VERSOES where codigo = 1) then
begin
  alter procedure sp_calcula_saldo_cliente ..... ;
  insert into VERSOES values (1);
end

/* Segunda atualização do sistema */
if exists(select * from VERSOES where codigo = 2) then
begin
   recreate table VENDAS .... ;
    insert into VERSOES values (2);
end

A grande sacada, é que independente da versão que meu cliente esteja utilizando, qualquer um que baixar o arquivo de atualizações, irá atualizar o sistema para a versão mais recente!!!


Mas........

o grande problema é que não sei como fazer scripts condicionais no firebird!!! ALGUEM AÍ TEM IDÉIA???

  From: Romulo Oliveira 
  To: lista em firebase.com.br 
  Sent: Friday, January 27, 2006 2:39 PM
  Subject: Re: [firebase-br] Versão de banco de dados


  Gabriel,

  Opa! Podemos converar. . Jà pensei em diversas formas de implementar isto e
  simplesmente não cheguei a uma forma eficiente.

  Já pensei em manter um arquivo com os comandos SQL que devem atualizar o
  banco.  Tipo:

  Da versão 1.0.1 para 1.0.4
  ALTER TABLE
  INSERT
  ALTER TABLE

  Da versao 1.04 para 2.0
  ..
  ..
  ..

  Tipo, eu guardar as mudanças da base entre as versões e o programa ao ser
  executado pegaria a versao dele (que sempre deve ser a ultima, mas nem
  sempre é assim) e atualizar os comandos.  Mas é mt sujeitoa falha.

  Outra forma que pensei era recriar a base nova em um banco vazio e depois
  transportar oso dados para a nova estrutura, assim já mantendo uma copia
  exata da base original antes da atualização.  Desisti pois achei que nao
  ficaria funcional.

  Explique como fez, acho que isso dáuma boa discussão!
  Vlw!

  Abraços,

  Romulo
  Rio das Ostras / RJ

  "Gabriel Hilbig" <ghilbig em bol.com.br> escreveu
  na mensagem news:drdlbg$flr$1 em sea.gmane.org...
  > Fabrício;
  >
  > Tivemos o mesmo probl que vc.
  >
  > A solução foi desenvolver uma Rotina de Atualização do BD.
  >
  > Nosso exectável carrega um ARRAY com TABELAS , CAMPOS, TIPOS, INDICES,
  > TRIGGERs, etc ....
  >
  > O próprio software avalia o BD instalado no CLI e , havendo qq
  divergência,
  > ele mesmo corrige CRIANDO CAMPOS , IDXs , etc.
  >
  > -- 
  > Gabriel Hilbig
  >
  > "Fabrício Fadel Kammer"
  > <ffkammer em conchalnet.com.br> escreveu na
  > mensagem news:005701c6236d$f7d4e590$1b0aa8c0 em fabricio...
  > Boa tarde lista,
  >
  > Gostaria da opnião de todos sobre controle de versão de banco de dados.
  >
  > Meu software está crescendo demais e queria ter uma forma de previnir
  > que meus clientes utilizassem uma versão do executável que não é
  > compatível com o banco de dados em uso. Alguém na lista faz esse tipo de
  > controle? Se sim, como?
  >
  > Grato,
  >
  > Fabrício F. Kammer
  >
  >
  > ______________________________________________
  > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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.bavs.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.bavs.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