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 em>. Et je me demande pourquoi. J'utilise des clés étrangères: p> et j'ai deux tables. Table d'identifiant: p> et une table qui fait référence aux identificateurs: p> insert fonctionne bien: P> maintenant je veux définir la gâchette suivante, qui convertit une mise à jour en un insert: p> mais il échoue avec l'erreur ci-dessus et je ne comprends pas pourquoi. p> p>
3 Réponses :
J'espère que ceci est juste une faute de frappe dans le poteau, mais votre relève Vous avez dactylographié: p > Créer code> doit lire:
INSTEAD OF UPDATE OF
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
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 code> ne sont que pour les vues et ne peuvent pas être utilisés avec des tables. p>
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.
Il suffit de créer une vue person_view comme sélectionnez * de la personne code> et pointez votre déclencheur. P>