contrainte de clé étrangère SUR DELETE CASCADE ne fonctionne pas dans la base de données sqlite sur Android
J'ai des "jours" de la table créée comme suit
"create table days(" +
"day_id integer primary key autoincrement, " +
"conference_id integer , " +
"day_date text, " +
"day_start_time text, " +
"day_end_time text, " +
"day_summary text, " +
"day_description text)";
et j'ai des pistes de table est créé comme suit
CREATE_TABLE_TRACK = "create table track(" +
"track_id integer primary key autoincrement," +
"day_id integer,"+
"track_name text," +
"track_description text," +
" FOREIGN KEY(day_id) REFERENCES days(day_id) ON DELETE CASCADE )";
comme indiqué ci-dessus, j'ai de clé étrangère day_id référence à la day_id de table de jours...
Donc, ce que je veux, c'est que si je supprime le jour, puis la piste correspondante doit également être supprimé... Mais il ne se produit pas dans mon cas..
J'ai sqlite avec la version 3.5.9
Et j'ai aussi ajouté 1 ligne dans ma classe helper comme
> db.execSQL("PRAGMA foreign_keys=SUR;");
mais ne fonctionne toujours pas.. merci de m'aider..
source d'informationauteur NullPointerException
Vous devez vous connecter pour publier un commentaire.
De suppression en cascade n'est pas pris en charge jusqu'à Sqlite version 3.6.19, qui est inclus pour la première fois sur Android 2.2.
Heureusement, il existe une alternative.
Vous pouvez exécuter une autre requête de ce type en dessous de votre créer une table de requête:
Noter que
delete_days_with_track
est juste un nom descriptif de ce que le déclencheur n'est, et c'est exactement le modèle que j'utilise; je crois que vous pouvez le nommer comme vous le souhaitez.Selon la SQLite Documentation support pour les Clés Étrangères n'a pas été ajouté jusqu'à ce que 3.6.19.
À l'aide de 3.5.9 vous aurez à faire de votre cascade suppressions de quelque autre manière.