Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] foreign key mismatch ao atualizar dados de tabela

Bruno, durante a instalação eu estou inserindo vários campos de teste nas tabelas, entre eles estão as construtoras..sendo que eu especifico o id delas manualmente. Executei o select e me retornou os dados corretamente.

    public static Construtora get(Long idConstrutora) {
       
        idConstrutora = 2L;
        //Cursor c = consultar(TABELA_CONSTRUTORA, COLUNA_ID_CONSTRUTORA, idConstrutora.toString());
        Cursor c = mDb.query(true,TABELA_CONSTRUTORA, null,COLUNA_ID_CONSTRUTORA+"=" +String.valueOf(idConstrutora),null,null, null, null,null);
        c.moveToFirst();
        Construtora cons = deCursorParaConstrutora(c);
        System.out.println("CONSTRUTORAAAAAAAAAAAAAAAAAAAAAAAAAA "+c.getCount()+"  ID "+cons.getIdConstrutora());
        c.close();
        return cons;
       
    }

12-16 12:06:54.542: I/System.out(459): CONSTRUTORAAAAAAAAAAAAAAAAAAAAAAAAAA 1  ID 2

Queria muito que esse fosse o problema, pois seria simples de resolver, mas pelo o que vi aqui, não é.
Mais alguma ideia Bruno?

Em 16 de dezembro de 2011 09:46, Bruno Albuquerque <bruno.albuquerque@gmail.com> escreveu:
Cara, mais uma vez. O problema *é* com a chave estrangeira. O Erro diz
exatamente isso. Rode esse query:

SELECT * FROM CONSTRUTORA WHERE _id = 2

Isso retorna algo?

-Bruno

2011/12/15 Júlio Cesar Bueno Cotta <juliocbcotta@gmail.com>:
> Pessoal..testei aqui...e nada mudou..
> Coloquei "no action" e tb tentei com "restrict" em todas as tabelas (tanto
> no on update quanto no on delete) para ver se funcionava..e nada.. continuou
> dando o mesmo erro..coloquei auto incremento em todas as tabelas de chave
> simples e tb não mudou nada..se tiverem mais alguma ideia..eu gostaria de
> ouvir (ler).. :-D
>
> E somente a titulo de curiosidade..quando desligo a verificação de chave
> extrangeira no SQLite..tudo funciona..aparentemente..
>
> Abraço.
>
> 2011/12/15 Júlio Cesar Bueno Cotta <juliocbcotta@gmail.com>
>>
>>
>>
>> Em 15 de dezembro de 2011 17:17, Diego Rocha <diego@diegosrocha.com.br>
>> escreveu:
>>
>>> Diego,
>>>
>>> Autoincrement você não coloca como null, pois como ele disse, no SQLite o
>>> "Integer Primary Key" vai funcionar como autoincrement. Quando ele não
>>> passar valor pro insert (ao invés de null vai usar o incremento) na chave.
>>>
>> Por definição, uma chave primaria não pode ser null..ela é o ponto de
>> referencia único (no sentido que identifica unicamente uma linha na tabela)
>> e por tanto qualquer coluna marcada como sendo primary key..nunca pode ser
>> marcada como "null". Tem haver com a integridade da tabela..
>>
>>> Você disse que o problema acontece só no update não é?
>>
>> Sim.
>>>
>>> Será que o problema não é por você estar usando cascade do update?
>>> Faz um teste com a tabela sem "on update cascade" e vê se funciona.
>>>
>> Vou testar hoje a noite e dou um feedback..estou usando on delete restrict
>> e on update cascade em todas as FK.. ao meu ver..isso não deveria ser um
>> problema..mas vai que é neh. :-D
>> Assim que testar aviso aqui..
>> Abraço e muito obrigado pelas dicas!
>>>
>>> Atenciosamente,
>>> Diego Rocha
>>
>>
>>
>>
>> --
>> Júlio Cesar Bueno Cotta
>> Bacharel em Ciência da Computação pela UFV
>> Mestrando em Ciência da Computação pela UFABC
>>
>
>
>
> --
> Júlio Cesar Bueno Cotta
> Bacharel em Ciência da Computação pela UFV
> Mestrando em Ciência da Computação pela UFABC
>



--
Júlio Cesar Bueno Cotta
Bacharel em Ciência da Computação pela UFV
Mestrando em Ciência da Computação pela UFABC

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário