[firebase-br] campo zerado - Parte II
Sandro Souza
escovadordebits em gmail.com
Sex Dez 5 15:31:15 -03 2008
Bom dia/tarde João.
Ontem, eu te passei o seguinte comando:
ALTER TABLE MOVIMENTACAO
ALTER PROVENTOS TYPE DECIMAL(18,4),
ALTER DESCONTOS TYPE DECIMAL(18,4);
Mas testando aqui, realmente ocorreu o erro que você relatou.
Então, a melhor solução é a do nosso amigo Gustavo Moda, que deixou bem
detalhado o roteiro, que para esse seu caso da tabela CALC_HE, seria algo
como:
1 - Incluindo os novos campos substitutos, já com os novos formatos:
ALTER TABLE CALC_HE
ADD NOVO_SAL_REAL NUMERIC(15,2),
ADD NOVO_TOT_HR_R NUMERIC(15,2),
ADD NOVO_TOT_HE_SR NUMERIC(15,2);
2 - Copiando e convertendo os valores do formato antigo para o novo:
UPDATE CALC_HE SET
NOVO_SAL_REAL = SAL_REAL,
NOVO_TOT_HR_R = TOT_HR_R,
NOVO_TOT_HE_SR = TOT_HE_SR;
3 - Excluindo os campos antigos:
ALTER TABLE CALC_HE
DROP SAL_REAL,
DROP TOT_HR_R,
DROP TOT_HE_SR;
4 - Renomeando os novos campos para os nomes originais:
ALTER TABLE CALC_HE
ALTER NOVO_SAL_REAL TO SAL_REAL,
ALTER NOVO_TOT_HR_R TO TOT_HR_R,
ALTER NOVO_TOT_HE_SR TO TOT_HE_SR;
Pode testar esse aí, que funcionou aqui.
Posso até estar enganado, mas acredito que, antes disso, seria melhor
alterar o tipo desses campos de volta para FLOAT pelo IB Expert, já que ele
não converteu realmente os valores, e apenas alterou a definição desses
campos, o que deixa uma "bomba de efeito retardado" que estourará mais
adiante.
Espero ter ajudado mais que atrapalhado. :D
2008/12/5 joao_jma <joao_jma em itelefonica.com.br>
> Se o pessoal se lembra de ontem, resolveram meu problema, eu usava campo
> Float ao invés de Numeric(15,2).
>
> Não me recordo quem, mas me passaram um código para alteração dos tipos dos
> campos, o que seria muito prático pra mim.
> Segue abaixo o código:
>
> ALTER TABLE CALC_HE
> ALTER SAL_REAL TYPE NUMERIC(15,2),
> ALTER TOT_HR_R TYPE NUMERIC(15,2),
> ALTER TOT_HE_SR TYPE NUMERIC(15,2);
>
> Quando executo esse comando, me retorna o seguinte erro:
>
> can't format message 13:393 -- message system code -4.
> unsuccessful metadata update.
> Cannot change datatype for SAL_REAL. Conversion from base type FLOAT to
> BIGINT is not supported.
>
> Alguém pode me ajudar? Senão terei que alterar campo a campo na base de
> dados... rs
>
> Abraços
>
> João M. de Amorim - Informática:
> Andreza Enxovais - Ibitinga/SP
> ((16) 3341-9000
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista