[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