[firebase-br] RES: Aumentar tamanho de campo que é chave primária, tem relacionamento e tigger

Sergio Nascimento sergiojampapb em gmail.com
Seg Set 22 09:40:04 -03 2014


O problema é que são dezenas de bases espalhadas pelos clientes, por isto a
melhor solução foi a do DATAPUMP, só que eu não conheço nenhum de linha de
comando, porque aí eu criaria um BAT e o problema estaria resolvido.

Em 21 de setembro de 2014 20:09, W O <sistemas2000profesional em gmail.com>
escreveu:

> Lo que puedes hacer con los triggers es comentarlos, guardar el nuevo
> tamaño de la columna, y luego descomentar los triggers. No te olvides de
> eso.
>
> Para comentar tienes dos formas:
> 1. Para comentar todo un bloque: /* empieza el comentario y */ finaliza el
> comentario
> 2. -- comenta todo lo que viene a continuación en esa misma línea.
>
> Entonces, con comentar todas las vistas, triggers, y stored procedures que
> usan esa columna solucionarás el problema. Por supuesto más tarde hay que
> quitar esos comentarios.
>
> Saludos.
>
> Walter.
>
>
> 2014-09-21 16:52 GMT-04:00 Sergio Nascimento <sergiojampapb em gmail.com>:
>
> > Obrigado pelas resposta.
> >
> > Apaguei a chave primária e as relações, até aí tudo certo.
> >
> > Quando fui aumentar o tamanho do campo deu erro pq existem duas tiggers,
> > que por sinal não tem nenhuma relação com o campo alterado.
> >
> > Alguém tem mais alguma luz ?
> >
> > Obs importante: já é uma outra tabela (a do problema anterior a idéia do
> > PUMP deu certo), e esta nova tabela no banco novo também está com o
> tamanho
> > menor, logo o PUMP não resolve meu problema.
> >
> > Obrigado.
> >
> > Em 21 de setembro de 2014 11:29, Moacir - Softin Sistemas <
> > moacir em softin.com.br> escreveu:
> >
> > > Siga estas instruções abaixo que você não terá necessidade de excluir
> > > trigger, procedure,...:
> > >
> > >
> > > 1-Criar um procedure para excluir a chave primaria da tabela que será
> > > alterado o campo (ou crie um EXECUTE BLOCK):
> > > CREATE PROCEDURE P_PROCEDURE_EXCLUIR_PRIMARY_KEY (
> > >     tabela varchar(50))
> > > as
> > > declare variable chave varchar(50);
> > > begin
> > >         CHAVE = '';
> > >         FOR SELECT
> > >                 RDB$CONSTRAINT_NAME FROM RDB$RELATION_CONSTRAINTS WHERE
> > > RDB$RELATION_NAME =
> > >                 :TABELA AND RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' INTO
> > CHAVE
> > > DO
> > >                 EXECUTE STATEMENT 'ALTER TABLE '||TABELA||' DROP
> > CONSTRAINT
> > > '||CHAVE;
> > >
> > > end;
> > > COMMIT WORK;
> > > EXECUTE PROCEDURE P_PROCEDURE_EXCLUIR_PRIMARY_KEY('Nome da tabela para
> > > excluir chave primaria');
> > > COMMIT WORK;
> > > Drop procedure  P_PROCEDURE_EXCLUIR_PRIMARY_KEY;
> > > COMMIT WORK;
> > >
> > > 2-Aumentar o tamanho do campo de 4 para 6:
> > >
> > > UPDATE RDB$FIELDS A SET
> > >     A.RDB$FIELD_LENGTH = 06,
> > >     A.RDB$CHARACTER_LENGTH = 06
> > > WHERE A.RDB$FIELD_NAME IN
> > > (SELECT B.RDB$FIELD_SOURCE
> > > FROM RDB$RELATION_FIELDS B
> > > WHERE B.RDB$FIELD_NAME = 'Nome do Campo que sera alterado de tamanho'
> > >    AND B.RDB$RELATION_NAME in ('Nome da Tabela')
> > >    AND B.RDB$FIELD_SOURCE = A.RDB$FIELD_NAME);
> > > COMMIT WORK;
> > >
> > > 3-Recriar o indice com o novo tamanho:
> > >
> > > ALTER TABLE 'Nome da tabela' ADD PRIMARY KEY (campo(s) para o Indice);
> > > COMMIT WORK;
> > >
> > > Att,
> > > Moacir
> > >
> > >
> > > -----Mensagem original-----
> > > De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Carlos H.
> > > Cantu
> > > Enviada em: domingo, 21 de setembro de 2014 08:32
> > > Para: FireBase
> > > Assunto: Re: [firebase-br] Aumentar tamanho de campo que é chave
> > primária,
> > > tem relacionamento e tigger
> > >
> > > Não, mas vc pode fazer um PUMP dos dados de uma base para outra (com o
> > > campo no tamanho que vc quer), ou desative as constraints que dependem
> > > desse campos, faça a alteração do tamanho, e depois reative.
> > >
> > > []s
> > > Carlos H. Cantu
> > > www.FireBase.com.br - www.firebirdnews.org
> > > www.warmboot.com.br - blog.firebase.com.br
> > >
> > > SN> Pessoal,
> > >
> > > SN> Estou com um banco da dados que tem um campo (vamos chama-lo de C)
> > que
> > > é
> > > SN> char (4), e esta tabela já está bem povoada (e seus relacionamentos
> > > também).
> > >
> > > SN> Só que surgiu a necessidade de aumentar o tamanho do campo C para
> > char
> > > (6).
> > >
> > > SN> Só que teria que apagar chave primária, relacionamentos, tiggers,
> > etc e
> > > SN> depois recria-los, mas não quero fazer isto.
> > >
> > > SN> Fiz um backup de um banco onde o campo C já está com o tamanho char
> > > (6).
> > >
> > > SN> A pergunta é: tem como eu restaurar os dados do banco onde C é
> > char(4)
> > > na
> > > SN> estrutura do banco onde C é char(6) ?
> > >
> > > SN> Obrigado.
> > > SN> ______________________________________________
> > > SN> FireBase-BR (www.firebase.com.br) - Hospedado em
> www.locador.com.br
> > > SN> Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > SN> http://www.firebase.com.br/fb/artigo.php?id=1107
> > > SN> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > >
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > >
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista