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

W O sistemas2000profesional em gmail.com
Seg Set 22 11:30:09 -03 2014


Para saber como crear un archivo .BAT con el cual puedas conectarte a ISQL
y realizar cualquier tarea que desees puedes leer este artículo:

http://firebird21.wordpress.com/2014/09/05/creando-un-archivo-batch-para-ejecutar-a-isql/

Saludos.

Walter.


2014-09-22 8:40 GMT-04:00 Sergio Nascimento <sergiojampapb em gmail.com>:

> 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
> >
> ______________________________________________
> 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