48 votes

ON DELETE CASCADE dans sqlite3

J'ai la structure suivante : (Désolé pour les noms maladroits, c'est parce que c'est une base de données sqlite pour mon application iPhone qui n'est pas encore sortie)

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

Y a-t-il une raison pour laquelle la ligne dans klb_log_food_maps n'est pas supprimé lorsque je supprime une ligne dans klb_log ?

85voto

Paul Lefebvre Points 3624

Le support des clés étrangères n'est pas activé par défaut dans SQLite. Vous devez l'activer manuellement à chaque fois que vous vous connectez à la base de données en utilisant le pragma :

PRAGMA foreign_keys = ON

14voto

GKK Points 97

Le support des clés étrangères est-il activé ?

requête PRAGMA foreign_keys = ON; pour l'allumer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X