I'm developing an Android 2.2+ app with SQLite db support. I'm trying to 
define referential integrity constraints while creating the tables. I've 
also enabled the foreign key support by executing db.execSQL( "PRAGMA 
foreign_keys=ON;" ); in onCreate and onOpen methods of SQLiteOpenHelper. 
Afteer setting up my tables and proper foreign key references, it still 
allows me to insert rows in tables where reference records are missing. For 
e.g. I've following structure

CREATE TABLE Questions(_id integer primary key,question text not null);
CREATE TABLE Ques_Ans(_id integer primary key autoincrement,qid integer not 
null,
                      aid integer not null,is_correct integer default 0, 
                      FOREIGN KEY (qid) REFERENCES Questions(_id));

and following my data in the table

INSERT INTO Questions VALUES(1, 'Some text');
INSERT INTO Ques_Ans(qid, aid, is_correct) VALUES(20, 1, 0);

If foreign key is properly set on Ques_Ans table, 2nd insert should have 
failed as there is no record in Questionstable with id 20, but somehow my 
app does not thrown any error and inserts the 2nd insert statement. Can 
anybody tell me whats wrong over here or am I missing any configuration 
over here? Below is what I've already tested...

   - Using sqlite3 tool, switching on PRAGMA foreign_keys=ON; foreign key 
   works as expected
   - Same thing if used via app on Emulator or on Phone does not work
   - Insert statements executed using insert() or execSQL(). None of them 
   throw foreign key constraint failed error
   - PRAGMA integrity_check returns ok. So database is not corrupt.

Any help in this regards would be great.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to