[firebase-br] Alteração de coluna de uma tabela

Eduardo Pelizzari de Andrade eduardoandrade em persoft.com.br
Qua Maio 9 16:55:38 -03 2012


Saudações

Tentei fazer uma alteração em um campo de uma com o seguinte comando SQL:

ALTER TABLE CADASTROPARCEIROS ALTER COLUMN EMAIL TYPE VARCHAR(400)

Tive como resposta a seguinte mensagem de erro:

This operation is not defined for system tables.
unsuccessful metadata update.
Column EMAIL from table CADASTROPARCEIROS is referenced in C_CADASTRO

Entendo que este erro acontece porque a coluna email é referencia na 
procedure C_CADASTRO. Como tenho várias procedures, inclusive umas 
dependente das outras, para que o comando acima funcione, precisaria 
comentá-las, aplicar a alteração acima, depois voltar as procedures com 
o código correto.

Por outro lado, verifique que o comando abaixo funciona:

update RDB$FIELDS set
RDB$FIELD_LENGTH = 400,
RDB$CHARACTER_LENGTH = 400
where RDB$FIELD_NAME = 'RDB$70'

Neste caso 'RDB$70' é o domínio da coluna do campo EMAIL, da tabela 
CADASTROPARCEIROS.

Evidente que eu precisaria, de qualquer forma, alterar as procedures 
para aumentar o tamanho do campo email, mas esta alterações seriam mais 
simples do que as alterações necessárias usando o comando "ALTER TABLE".

Qual a diferença dos dois comandos? Se eu usar o segundo comando posso 
ter algum tipo de problema? Já considerando que vou corrigir as 
procedures que retornam este campo

Depois tentei uma outra abordagem, criei um domínio chamado d_email e 
usei o comando abaixo para alterar o tamanho do email:

update RDB$RELATION_FIELDS set
RDB$FIELD_SOURCE = 'D_EMAIL'
where (RDB$FIELD_NAME = 'EMAIL') and
(RDB$RELATION_NAME = 'CADASTROPARCEIROS')

Esta abordagem no entanto não funcionou.




-- 
Eduardo Pelizzari de Andrade
Persoft Software Aplicativos
Fone: (11) 2221 8061
www.persoft.com.br





Mais detalhes sobre a lista de discussão lista