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

Eduardo Bahiense eduardo em icontroller.com.br
Ter Set 7 13:05:17 -03 2010


O problema de passar pelo dataset é que você ficará vulnerável à horas 
configuradas erradas na máquina cliente, e se o sujeito quiser simular 
que fez ontem, bastará trocar a hora do seu computador. Se for passar 
pelo dataset, veja se consegue passar "CURRENT_TIMESTAMP" ao ínvés da 
variável "NOW" do Delphi.

Eduardo

Em 06/09/2010 08:11, Thiago escreveu:
> Eduardo, bom dia.
>
> Muito obrigado pela explicação, eu realmente não que o default source
> era acionado apenas se não passasse valor.
>
> Pelas suas opções acho que vou acabar passando pelo dataset mesmo pois
> fica mais claro.
>
> Obrigado.
>
> Em 03/09/2010 19:30, Eduardo Bahiense escreveu:
>> 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
>>>
>>
>>
>>
>> ______________________________________________
>> 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
>>
>
>
>
> ______________________________________________
> 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