[firebase-br] Alterar campo Computado
Samuel Duarte Matos
samuelmatos em cprinformatica.com.br
Qua Maio 30 13:29:48 -03 2007
Olá a todos!
Estou utilizando FB 1.5.4
Meu problema é o seguinte:
Tenho um campo numa tabela, e este campo é computado.
Ex.:
O nome do meu campo é VL_TOTALPEDIDO
e ele é computado assim: VL_TOTALPRODUTOS + VL_ACRESCIMO - VL_DESCONTO
Até aí tudo bem, funciona tudo perfeitamente.
Tenho várias procedures no banco que utilizam este campo.
Aí é que surge o problema: Tenho que modificar este campo VL_TOTALPEDIDO, e
acrescentar um campo na "computação" dele. Ficaria assim: VL_TOTALPRODUTOS +
VL_ACRESCIMO - VL_DESCONTO + VL_OUTROSACRESCIMOS
O problema é que, como existem váaaaarias procedures utilizando o campo, não
consigo deletar o campo para criá-lo novamente. E nem alterá-lo, até onde eu
sei.
Com isso, tive a "brilhante" idéia de modificar as tabelas do sistema. Fiz o
seguinte SQL:
update rdb$fields f
set f.rdb$computed_source = '(VL_TOTALPRODUTOS + VL_ACRESCIMO - VL_DESCONTO
+ VL_OUTROSACRESCIMOS + VL_TOTALIPI)'
where f.rdb$field_name = (select rf.rdb$field_source
from rdb$relation_fields rf
where rf.rdb$field_name = 'VL_TOTALPEDIDO' and
rf.rdb$relation_name = 'PEDIDO');
Funcionou, de certa forma. Utilizando o IBExpert, quando eu vou na tabela
pedido, aparece o campo VL_TOTALPEDIDO com os campos computados, tudo
certinho, mas a SOMA real não bate, ou seja o campo que eu adicionei não
está sendo computado. Acredito que seja pq eu precisaria tb modificar o
campo rdb$computed_blr, que é de onde o FB pega os campos realmente.
Perguntas
1.Tem como fazer isso?
2. Não tem como eu alterar um campo computado através da cláusula ALTER
TABLE ALTER COLUMN?
Obrigado a todos
Samuel
Mais detalhes sobre a lista de discussão lista