Novas colunas em tabela

5 respostas
CristianPalmaSola10

Galera tenho uma aplicao em producao, cada cliente tem um banco de dados local, em uma alteração que fiz no sistemas necessitei criar duas colunas novas no banco, e queria saber qual é a melhor forma de criar no banco dos clientes essas colunas, penso que na inicialização do sistema deveria haver uma checagem das colunas existente no banco do cliente e o que deveria existir se falta alguma rodar uma instrucao de alter table criando o que falta.

Qual a melhor modo de se fazer isso ? Ja fizeram algo parecido ?

Obrigado a todos desde ja.

5 Respostas

wagnerfrancisco

No Android existe este “problema” também. Quando você lança uma nova versão de um aplicativo, as vezes precisa atualizar o banco de dados embutido.

A solução do Android é, basicamente, manter um número de versão. Quando você incrementa este número, ele executa um método chamado onUpgrade. Neste método você pode efetuar a atualização do banco de dados.

Essa checagem acontece quando você tenta abrir uma conexão com o banco pela primeira vez.

Você poderia fazer algo neste sentido também. Utilizar números de versões e atualizar o banco conforme este número.

CristianPalmaSola10

Interressante, obrigado pela informação estou estudando Android e garanto que esta informação sera util.

Mas não ha uma forma de ler a estrutura do banco de dados pelo java, neste caso é uma aplicação web com a base de dados no cliente, e entaum perceber a falta da coluna e atualizar o banco ?

Sera que existe uma forma disso, ja pesquisei o SportSchema do hibernate, talvez utiliza-lo para exportar o schema do banco achar o script da tabela e ver se a coluna existe ali, o que voce acha sera que é uma boa forma de fazer isso ?

Obrigado pela ajuda.

wagnerfrancisco

Se o hbm2ddl do Hibernate estiver marcado para update, ele faz este tipo de atualização. Particularmente nunca utilizei esta opção para sistemas em produção. Acho muito arriscado.

O que você quer é possível, mas eu penso que é desnecessariamente mais complexo. Se tu tiver um bom motivo, apresente-nos. :smiley:

CristianPalmaSola10

Poise tambem estou com o pe atras de utilizar o hbm2ddl do Hibernate, por ser em producao.

Sei que ta forma que coloquei antes é um pouco complexo mas é que na verdade não vejo como o fazer de outra maneira, se voce tiver uma ideia de como faze-lo sera muito bem vinda.

wagnerfrancisco

humm

Se fosse usando versões, a primeira vez você teria que atualizar e, caso a atualização ocorresse com sucesso, armazenar o número da versão em algum lugar (num arquivo ou no próprio banco). Nas próximas vezes você teria que buscar esse número e executar o código de atualização somente se o número foi incrementado. Se as atualizações forem frequentes, eu acho que vale a pena.

Mas eu realmente só precisei disso no Android, e esse controle já vem pronto. Talvez exista algo pronto pra aplicações Java não-Android que eu desconheça…

Falou.

Criado 11 de julho de 2012
Ultima resposta 11 de jul. de 2012
Respostas 5
Participantes 2