sexta-feira, maio 20, 2011

Campo data com valor padrão no SQLite

HI,

Ainda tou engatinhando no Android, levando uns tombos, mas graças a Deus eu tou conseguindo avançar.

No exemplo de controle de despesas já coloquei um spinner para indicar o tipo de pagamento da despesa.



Agora a minha batalha é colocar o campo data dessa despesa. Estava incluindo no SQLite Manager, extensão do firefox, um campo do tipo data e selecionei para não ter valor null, e quando se faz isso, temos obrigação de informar um valor padrão. Tinha colocado SYSDATE, mas não deu certo.

Pesquisando no google, encontrei uma solução usando uma trigger para atualizar a data antes de inserir.

CREATE TABLE foo (
id NUMBER NOT NULL,
created DATE);

CREATE TRIGGER insert_date AFTER INSERT ON foo
BEGIN
UPDATE foo SET created = DATETIME('NOW') WHERE rowid = new.rowid;
END;


Só que dessa maneira aí, o campo vai ser atualizado, mesmo que eu informe a data na tela.

Modifiquei a trigger para testar se o campo está vazio, se tiver, atualiza a data atual do banco.

CREATE TRIGGER insert_date AFTER INSERT ON foo
BEGIN
UPDATE foo SET created = DATETIME('NOW') WHERE rowid = new.rowid and new.created is null;
END;

Agora vou tentar colocar o campo data no formulário.

Espero que possar ser úitl, fiquem na Paz

Nenhum comentário: