9
votes

Pourquoi l'erreur SQLite ne peut pas créer au lieu de déclencher la table?

J'essaie de créer un déclencheur à la place pour une mise à jour sur une table. L'utilisation normale du lieu de déclencheurs est des vues mais le manuel SQLITE indique que, à la place des déclencheurs, sont également valables pour les tables. Mais je reçois l'erreur: ne peut pas créer au lieu de déclencher la table . Et je me demande pourquoi.

J'utilise des clés étrangères: xxx

et j'ai deux tables. Table d'identifiant: xxx

et une table qui fait référence aux identificateurs: xxx

insert fonctionne bien: xxx

maintenant je veux définir la gâchette suivante, qui convertit une mise à jour en un insert: xxx

mais il échoue avec l'erreur ci-dessus et je ne comprends pas pourquoi.


0 commentaires

3 Réponses :


1
votes

J'espère que ceci est juste une faute de frappe dans le poteau, mais votre relève Créer code> doit lire: xxx pré>

Vous avez dactylographié: p >

INSTEAD OF UPDATE OF 


1 commentaires

Non c'est faux. La syntaxe est au lieu de la mise à jour du nom de la colonne sur le nom de la table. Voir ici: sqlite.org/lang_createtrigger.html



13
votes

J'ai essayé de passer à travers Le code source (recherche de "Impossible de créer à la place. De ") et malgré la lecture de votre lien dans le commentaire dans lequel la déclaration de création de déclenchement est décrite dans de grands détails, je dirais que les déclencheurs avec au lieu de ne sont que pour les vues et ne peuvent pas être utilisés avec des tables.


3 commentaires

Oui, c'est la bonne réponse. Au lieu de déclencheurs ne sont que pour les vues.


Les déclencheurs peuvent être créés sur des vues, ainsi que des tables ordinaires, en spécifiant au lieu de la création de relevé de déclenchement.


@Noobsaibot Le "conneries" est écrit dans la documentation officielle SQLITE.



0
votes

Il suffit de créer une vue person_view comme sélectionnez * de la personne et pointez votre déclencheur.


0 commentaires