2010-02-19 7 views
0

Je suis nouveau sur ce sujet. je veux quelque chose comme ça.comment créer des déclencheurs dans sqlite3?

J'ai deux tables dans mon sqliteDatabase est maître et un autre est enfant. Maintenant, si je supprime un enregistrement du maître supposez que je supprime une ligne de maître où id = 5, alors tous les enregistrements de la table enfant dont l'id = 5 supprimé automatiquement. Je ne sais pas comment créer des déclencheurs et comment appliquer des contraintes de clés étrangères afin que quelqu'un me dise un moyen de le faire dans sqlite3 Manager de firefox. Merci

+0

Si vous avez SQLite version 3.6.19 ou supérieure, vous pouvez le faire sans déclencheur. Voir la réponse de Peter Lang pour des informations sur les clés étrangères. –

+0

Oui, 3.6.19 et supérieur prend en charge les clés étrangères. N'oubliez pas juste après la connexion pour exécuter "pragma foreign_keys = on". –

+0

je ne sais pas sur la version où puis-je voir la version j'ai firefox gestionnaire sqlite ver 0.5.11 –

Répondre

3

Vous n'avez pas besoin d'un déclencheur pour cela, votre clé étrangère fera que si vous définissez ON DELETE CASCADE:

CREATE TABLE child(
    id   INTEGER, 
    some_info TEXT, 
    master_id INTEGER, 
    FOREIGN KEY(master_id) REFERENCES master(id) ON DELETE CASCADE 
); 

Voir documentation about foreign keys.

EDIT:

Si vous avez vraiment besoin de le faire en utilisant un déclencheur, un coup d'oeil à Foreing Key Triggers.

+0

cela ne fonctionne pas –

+0

regardez ce lien http://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers –

+0

pouvez-vous créer un déclencheur pour cela? –