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

Sergio Nascimento sergiojampapb em gmail.com
Dom Set 21 17:52:31 -03 2014


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
>



Mais detalhes sobre a lista de discussão lista