New scale specified for column NOME_CAMPO must be at most N
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
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)
Curtidas 0
Respostas
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