Alterando campos no Firebird
Dica publicada em Banco de Dados / Miscelânea
Alterando campos no Firebird
Apesar de muito procurar, não consegui encontrar um método para alterar um campo de NULL para NOT NULL sem utilizar os objetos internos do Firebird .
Para isso é necessário:
Para isso é necessário:
UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = 1
WHERE RDB$RELATION_NAME = 'tablename' AND
RDB$FIELD_NAME = 'fieldname';
WHERE RDB$RELATION_NAME = 'tablename' AND
RDB$FIELD_NAME = 'fieldname';
Onde: 0 NULL e 1 NOT NULL.
Outras alterações na tabela são possíveis sem tanto trabalho, como por exemplo alterar o tipo de um campo:
ALTER TABLE tablename ALTER fieldname TYPE typefield;
Mas atenção, o Firebird não permite alterações que possam resultar em perda de dados, se um campo é VARCHAR(50), não é possível reduzí-lo, aí não tem jeito, precisa excluir e recriar.
ALTER TABLE tablename DROP fieldname;
ALTER TABLE tablename ADD fieldname typefield;
ALTER TABLE tablename ADD fieldname typefield;
Ao contrário do que muitos pensam, o MODIFY não funciona no Firebird, pelo menos na versão 2.0.