НА УДАЛЕННОМ КАСКАДЕ в sqlite3 - PullRequest
39 голосов
/ 05 мая 2011

У меня следующая структура: (извините за неудобные имена, это потому, что это sqlite база данных для моего приложения iPhone, которая еще не выпущена)

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)
)

Есть ли причина, по которой строка в klb_log_food_maps не удаляется при удалении строки в klb_log?

Ответы [ 2 ]

71 голосов
/ 05 мая 2011

Поддержка внешнего ключа не включена в SQLite по умолчанию.Вам нужно включать его вручную каждый раз, когда вы подключаетесь к базе данных, используя прагму:

PRAGMA foreign_keys = ON
14 голосов
/ 05 мая 2011

У вас включена поддержка внешнего ключа?

запрос PRAGMA foreign_keys = ON;, чтобы включить его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...