[firebase-br] RES: Aumentar tamanho de campo que é chave primária, tem relacionamento e tigger
Moacir - Softin Sistemas
moacir em softin.com.br
Dom Set 21 11:29:46 -03 2014
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
Mais detalhes sobre a lista de discussão lista