New scale specified for column NOME_CAMPO must be at most N

Firebird

30/06/2010

Olá amigos

Estou tentando aumentar as casas decimais, só as casas decimais em um campo NUMÉRICO de
NUMERIC(15,2)  para NUMERIC(15,4)

Ao executar o código abaixo

ALTER TABLE LOTEM
    ALTER LIMITESUPERIOR TYPE NUMERIC(15,4);

gera o erro:

This operation is not defined for system tables.
unsuccessful metadata update.
New scale specified for column LIMITESUPERIOR must be at most 2.


Porém se eu executar assim:

update RDB$FIELDS set
RDB$FIELD_SCALE = -4
where RDB$FIELD_NAME = 'RDB$346'

aí funciona

ou assim

ALTER TABLE LOTEM
    ALTER LIMITESUPERIOR TYPE NUMERIC(17,4);

também funciona.

Mas eu queria manter o 15 e aumentar  só o decimal para 4 usando ALTER TABLE  XXXX ALTER CAMPO, porque há uma garantia de que estarei alterando o campo que realmente quero alterar. E criaria um script para atualizar no cliente.

Alguém sabe me dizer se o erro acima é bug no Firebird 2.1.3.18185?

Alguém teve esse problema e resolveu? Se sim, de que forma?


Abraços



Delmar
Delmar Observação)

Delmar Observação)

Curtidas 0

Respostas

Carlos Mazzi

Carlos Mazzi

30/06/2010

Normalmente esses erros ocorrem se sua tabela já está populada com dados indexados. E (ou) justamente indices devem ser re-escritos.   Há casos que é necessário, colocar numa tabela auxiliar e migrar os dados para, corrigi-los isoladamente, e depois retonar à sua origem. Mas cada caso é um caso.   Abracos++
GOSTEI 0
POSTAR