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

W O sistemas2000profesional em gmail.com
Dom Set 21 20:09:18 -03 2014


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
>



Mais detalhes sobre a lista de discussão lista