Подтвердить что ты не робот

УДАЛИТЬ КАСКАД в sqlite3

У меня есть следующая структура: (Извините за неудобные имена, это потому, что это база данных 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?

4b9b3361

Ответ 1

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

PRAGMA foreign_keys = ON

Ответ 2

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

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