在sqlite3触发器中调用sqlite3的.shell选项

时间:2017-09-18 06:12:21

标签: sqlite

create trigger t123  after update on t1
     begin
   .shell echo "hi";
    end;

.附近显示语法错误如何更正? 我的目标是通过在sqlite中使用trigger来执行脚本。

1 个答案:

答案 0 :(得分:1)

documentation表明在触发器主体中只允许UPDATE / INSERT / DELETE / SELECT语句。 (并且.shell无论如何都不是SQL语句;它只由sqlite3命令行shell实现。)

执行脚本的唯一方法是create a user-defined function,然后可以在虚拟查询中使用它来执行:

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

(如果某些其他没有安装此功能的程序使用该数据库,则此触发器将失败。)