[firebase-br] Campo com default source grava valor null

Eduardo Bahiense eduardo em icontroller.com.br
Sex Set 3 19:30:14 -03 2010


Oi Thiago

O problema é que o campo está declarado no dataset, e quando você não 
passa valor, o dataset está mandando como NULL. O defaultsource só é 
acionado quando vc não passa o campo no INSERT, se você o passa no 
insert expicitamente como NULL, o BD acata. Por exemplo:
INSERT INTO TABELA (A,B,C) VALUES(1,2,NULL)
INSERT INTO TABELA (A,B) VALUES (1,2) -> C usuará defaultsource

Para resover essa questão vc tem 3 opções (em ordem de preferência)

1. Retire o campo do dataset ou veja se há uma maneira de configurá-lo 
como não ativo para inserts e updates
2. Coloque uma trigger na tabela com algo como: 
"new.dth_insert=coalesce(new.dth_insert, current_timestamp)"
3. Passe "now" no valor do campo pelo dataset

Eduardo


Em 03/09/2010 13:29, Thiago escreveu:
> Galera, bom dia.
>
> Seguinte, tenho uma tabela no firebird onde tenho um campo chamado
> dth_insert com o default source como current_timestamp.
>
> Quando insiro um registro através de insert into via comando SQL o
> registro depois de gravado fica com a data e hora gravada no campo
> corretamente mas quando eu faço isso utilizando append e post no dataset
> no delphi esse campo fica gravado null na tabela.
>
> Eu nunca trabalhei utilizando gravação de dados diretamente pelo
> dataset, sempre fiz isso utilizando comandos SQL mesmo, por isso não sei
> o que devo configurar para que isso aconteça.
>
> E outra coisa, esse é um campo not null, mas como ele tem valor default
> eu não preciso passar nada de valor porque o banco vai fazer o
> preenchimento sozinho mas como pelo delphi está gravando null está dando
> exceção.
>
> Alguém poderia me ajudar?
>
> Obrigado.
>
>
> ______________________________________________
> 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