在sqlite3中删除CASCADE

时间:2011-05-04 21:48:00

标签: sql sqlite

我有以下结构:(抱歉尴尬的名字,这是因为它是我的iPhone应用程序的sqlite数据库,尚未发布)

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 个答案:

答案 0 :(得分:71)

默认情况下,SQLite中未启用外键支持。每次使用pragma:

连接到数据库时,都需要手动启用它
PRAGMA foreign_keys = ON

答案 1 :(得分:14)

您是否启用了外键支持?

查询PRAGMA foreign_keys = ON;将其打开