在sqlite3触发器中呼叫.sqlite3的shell选项


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

它显示.附近的语法错误如何纠正它?我的目的是通过在sqlite中使用触发器执行脚本。

文档显示触发器主体中仅允许更新/插入/删除/选择语句。(并且.shell无论如何都不是SQL语句;仅由sqlite3命令行shell实现。)

执行脚本的唯一方法是创建一个用户定义的函数,然后通过在虚拟查询中使用它来执行它:

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

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

最新更新