On DELETE CASCADE dans sqlite3
Je avoir la structure suivante: (Désolé pour les maladroits noms, c'est parce que c'est une base de données sqlite pour mon application iPhone qui n'est pas encore sorti)
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)
)
Est-il une raison pourquoi la ligne dans klb_log_food_maps
n'est pas supprimé lorsque je supprime une ligne dans klb_log
?
- Avez-vous résoudre ce problème? Je vais avoir le même problème, même après l'exécution de la "PRAGMA foreign_keys = SUR la requête".
- Oui, je l'exécute avant de faire des requêtes sur la base de données: si (sqlite3_prepare_v2(base de données, "PRAGMA foreign_keys = ON", -1, &enableForeignKey, NULL) != SQLITE_OK) { NSLog(@"ERREUR DANS PRAGMA DBADAPTER!"); } sqlite3_finalize(enableForeignKey); ET Ce sont des variables: statique sqlite3 *base de données; statique sqlite3_stmt *enableForeignKey;
Vous devez vous connecter pour publier un commentaire.
Support des clés étrangères n'est pas activé dans SQLite par défaut. Vous devez l'activer manuellement chaque fois que vous vous connectez à la base de données à l'aide de la pragma:
Avez-vous des support des clés étrangères activé?
requête
PRAGMA foreign_keys = ON;
pour l'activer