2017-09-18 4 views

Répondre

1

Le documentation montre que seules les instructions UPDATE/INSERT/DELETE/SELECT sont autorisées dans un corps de déclencheur. (Et .shell n'est pas une instruction SQL de toute façon, il est mis en œuvre que par la ligne de commande shell sqlite3.)

La seule façon d'exécuter un script est à create a user-defined function que vous pouvez exécuter en utilisant dans une requête fictive:

CREATE TRIGGER ... 
BEGIN 
    SELECT run_script('echo "hi"'); 
END; 

(ce déclencheur échouera si la base de données est utilisé par un autre programme qui n'installe pas cette fonction.)

+0

est-il possible de créer UDF persistante, dans la mesure i cherché et essayé, l'UDF peut être utilisé jusqu'à ce que DB est connecté, après cela il jette une erreur si nous essayons d'accéder à ce UD F dans le terminal sqlite. –

+0

Non; Les fonctions définies par l'utilisateur sont créées par l'application et non par la base de données. –

+0

Je sais que les UDF sont créés par des applications utilisant le ryt de sqlite api, ?? (sqlite_create_function()) .Cette fonction créée par l'application ne fonctionne pas en dehors de cette application si l'application est arrêtée et ne fonctionne pas? Ce que je pensais être la fonction créée par cette API sera écrit dans la base de données –