[firebase-br] Inserir um novo campo em todas as tabelas

Samuel Duarte Matos samuelmatos em cprinformatica.com.br
Qua Jun 6 10:08:19 -03 2007


Bom, vamos lá

Não existe mágica para o que vc deseja fazer.
O que vc pode fazer é uma procedure no banco, que selecione todas as tabelas 
do sistema e monte os scripts necessários para atualizar seu banco de dados.

Seria mais ou menos assim :

Faça um for select nas tabelas, a partir das tabelas do sistema.
Monte uma string que será o script de geração do cd_empresa (alter table 
:nometabela add cd_empresa integer not null)
Crie uma foreign key do campo cd_empresa (assim, vc não precisa criar 
índice)
Atualiza o campo cd_empresa em cada tabela, com o código desejado.

Execute esta procedure, e ela deve te retornar scripts para criar o campo, a 
foreign e o update para todas as tabelas que vc quer.

Daí é só exportar estes dados e mandar bala nos clientes.

Espero ter ajudado
Samuel




"Fausto" <fausto.s.a em uol.com.br> escreveu na 
mensagem news:46657C8D.7010503 em uol.com.br...
Bom dia amigos..

Devido a um mal planejamento no design de uma base de dados, cheguei a
conclusão que preciso inserir um campo "CD_EMPRESA INTEGER NOT NULL" em
todas as tabelas de minha base e ainda por cima criar um indice para
este campo, existe alguma forma de fazer isso via script?
E ainda neste script eu gerar um trigger para ser disparado no before
insert de cada tabela este trigger iria simplesmente gravar o codigo da
empresa neste campo.
Explico. o sistema,ainda em desenvolvimento, passou a ser multi-empresa,
portanto vou precisar deste novo campo para identificar os registros de
cada empresa.
Estou utilizando Delphi 7 +DBExpress+Firebird 1.53 com RemObjects.
Grato
Fausto



______________________________________________
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