ON DELETE CASCADE in sqlite3
I have the following structure: (Sorry for awkward names, it is because it is a sqlite database for my iPhone app which is not released yet)
CREATE TABLE klb_log (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
log_comment varchar(512)
)
CREATE TABLE klb_log_food_maps (
uid integer,
did integer,
PRIMARY KEY (uid,did),
FOREIGN KEY (uid) references klb_log(id) ON DELETE CASCADE,
FOREIGN KEY (did) references klb_food(id) ON DELETE CASCADE
)
CREATE TABLE klb_food (
id integer,
description varchar(255),
PRIMARY KEY (id)
)
Is there a reason why the row in klb_log_food_maps
is not removed when I delete a row in klb_log
?
Foreign key support is not enabled in SQLite by default. You need to enable it manually each time you connect to the database using the pragma:
PRAGMA foreign_keys = ON
Do you have foreign key support enabled?
query PRAGMA foreign_keys = ON;
to turn it on