È so uma duvida pois to começando a mecher com SQlite !!
2011/12/15 Júlio Cesar Bueno Cotta <juliocbcotta@gmail.com>
Em 15 de dezembro de 2011 07:36, Marcelo Henrique <marcelohd02@gmail.com> escreveu:Porque os (ID) nao sao autoincrement ?Todo "integer primary key" já é auto incrementado automaticamente se eu não passar a coluna no insert..
From: http://www.sqlite.org/autoinc.html--2011/12/15 Júlio Cesar Bueno Cotta <juliocbcotta@gmail.com>Pessoal, estou com um problema aqui na hora de atualizar os dados de uma tabela..quando eu insiro alguma linha funciona ok, mas quando vou atualizar dados dá o erro abaixo:
sqlite returned error code = 1, msg = foreign key mismatch
Error updating BAIRRO=meu bairro FONE_CELULAR= ID_REVISTA=0 FONE_RESIDENCIAL= NUMERO=123 ID_SITE=0 ID_CORRETOR_SOLICITADO=1 FONE_COMERCIAL=(12) 3123-1231 VISITOU_STAND_ANTES=NAO ID_CORRETOR_ATENDIMENTO=0 NOME=julio COMPLEMENTO=casa ID_JORNAL=0 ESTADO=SP CEP=12345-660 SEXO=Masculino EMAIL=julio@gmail.com ID_CONSTRUTORA=2 ENDERECO=Rua Porto CIDADE=Santos NOME_ACOMPANHANTE= using UPDATE CLIENTE SET BAIRRO=?, FONE_CELULAR=?, ID_REVISTA=?, FONE_RESIDENCIAL=?, NUMERO=?, ID_SITE=?, ID_CORRETOR_SOLICITADO=?, FONE_COMERCIAL=?, VISITOU_STAND_ANTES=?, ID_CORRETOR_ATENDIMENTO=?, NOME=?, COMPLEMENTO=?, ID_JORNAL=?, ESTADO=?, CEP=?, SEXO=?, EMAIL=?, DATA_NASCIMENTO=?, ID_CONSTRUTORA=?, ENDERECO=?, CIDADE=?, NOME_ACOMPANHANTE=? WHERE UPPER(EMAIL) = UPPER('julio@gmail.com') AND UPPER(ID_CONSTRUTORA) = UPPER('2')
A tabela é a seguinte: (um pouco resuzida para caber aqui..mas todas as FKs são simples como a de ID_CONSTRUTORA e com o mesmo comportamento para on update e on delete)
CREATE TABLE CLIENTE (BAIRRO TEXT,FONE_CELULAR TEXT,ID_REVISTA INTEGER,FONE_RESIDENCIAL TEXT,NUMERO TEXT,ID_SITE INTEGER,ID_CORRETOR_SOLICITADO INTEGER,FONE_COMERCIAL TEXT,VISITOU_STAND_ANTES TEXT,ID_CORRETOR_ATENDIMENTO INTEGER,NOME TEXT,COMPLEMENTO TEXT,ID_JORNAL INTEGER,ESTADO TEXT,CEP TEXT,SEXO TEXT,EMAIL TEXT,DATA_NASCIMENTO TEXT,ID_CONSTRUTORA INTEGER,ENDERECO TEXT,CIDADE TEXT,DATA_,NOME_ACOMPANHANTE TEXT, PRIMARY KEY (EMAIL,ID_CONSTRUTORA) CONSTRAINT FK_ID_CONSTRUTORA FOREIGN KEY (ID_CONSTRUTORA) REFERENCES CONSTRUTORA (_id) ON DELETE RESTRICT ON UPDATE CASCADE);
Já verifiquei na internet e achei essa explicação:
The English language error message for foreign key DML errors is usually "foreign key mismatch" but can also be "no such table" if the parent table does not exist. Foreign key DML errors are may be reported if:
- The parent table does not exist, or
- The parent key columns named in the foreign key constraint do not exist, or
- The parent key columns named in the foreign key constraint are not the primary key of the parent table and are not subject to a unique constraint using collating sequence specified in the CREATE TABLE, or
- The child table references the primary key of the parent without specifying the primary key columns and the number of primary key columns in the parent do not match the number of child key columns.
From:http://www.sqlite.org/foreignkeys.html
Mas não estou conseguindo entender como modificar as tabelas para que o erro pare de acontecer..as tabelas pais existem..estou mandando imprimir quando são criaddas..e as colunas que estou referenciando são primary key..
ID_REVISTA
CREATE TABLE REVISTA (NOME TEXT,ID_REVISTA INTEGER, PRIMARY KEY (ID_REVISTA) );
ID_SITE
CREATE TABLE SITE (URL TEXT NOT NULL ,_id INTEGER,NOME TEXT NOT NULL , PRIMARY KEY (_id) );
ID_CORRETOR_SOLICITADO e ID_CORRETOR_ATENDIMENTO
CREATE TABLE CORRETOR (ID_IMOBILIARIA INTEGER,_id INTEGER, PRIMARY KEY (_id) CONSTRAINT FK_ID_IMOBILIARIA FOREIGN KEY (ID_IMOBILIARIA) REFERENCES IMOBILIARIA (_id) ON DELETE RESTRICT ON UPDATE CASCADE);
ID_JORNAL
CREATE TABLE JORNAL (_id INTEGER,NOME TEXT NOT NULL , PRIMARY KEY (_id) );
ID_CONSTRUTORA
CREATE TABLE CONSTRUTORA (_id INTEGER,RESPONSAVEL TEXT,TELEFONE TEXT,CEP TEXT,NUMERO TEXT,ENDERECO TEXT,,INSCRICAO_ESTADUAL TEXT UNIQUE ,TELEFONE_CELULAR TEXT,CNPJ TEXT, PRIMARY KEY (_id) );
Será que alguém pode me dar uma ideia do que pode ser?
Desde já muito obrigado!
--Júlio Cesar Bueno Cotta
Bacharel em Ciência da Computação pela UFV
Mestrando em Ciência da Computação pela UFABC
- Marcelo Henrique -"Se não puder se destacar pelo talento, vença pelo esforço." (Dave Weinbaum)
--Júlio Cesar Bueno Cotta
Bacharel em Ciência da Computação pela UFV
Mestrando em Ciência da Computação pela UFABC
- Marcelo Henrique -
"Se não puder se destacar pelo talento, vença pelo esforço." (Dave Weinbaum)






0 comentários:
Postar um comentário