복붙노트

[SQL] sqlite3를에서 DELETE CASCADE ON

SQL

sqlite3를에서 DELETE CASCADE ON

나는 다음과 같은 구조를 가지고 : (아직 해제되지 않습니다 내 아이폰의 애플 리케이션을위한 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에서 행을 삭제할 때 klb_log_food_maps에서 행이 제거되지 않는 이유가 있습니까?

해결법

  1. ==============================

    1.외래 키 지원은 기본적으로 SQLite는에 사용할 수 없습니다. 당신은 수동으로이 프라그를 사용하여 데이터베이스에 연결할 때마다 그것을 활성화해야합니다 :

    외래 키 지원은 기본적으로 SQLite는에 사용할 수 없습니다. 당신은 수동으로이 프라그를 사용하여 데이터베이스에 연결할 때마다 그것을 활성화해야합니다 :

    PRAGMA foreign_keys = ON
    
  2. ==============================

    2.당신은 외래 키 지원을 활성화해야합니까?

    당신은 외래 키 지원을 활성화해야합니까?

    쿼리 PRAGMA의 foreign_keys = ON; 를 켭니다

  3. from https://stackoverflow.com/questions/5890250/on-delete-cascade-in-sqlite3 by cc-by-sa and MIT license