0
create trigger t123 after update on t1
begin
.shell echo "hi";
end;
.
付近に構文エラーが表示されます。修正方法はありますか? 私の目的は、sqliteでトリガを使用してスクリプトを実行することです。sqlite3トリガ内のsqlite3の.shellオプションを呼び出す
create trigger t123 after update on t1
begin
.shell echo "hi";
end;
.
付近に構文エラーが表示されます。修正方法はありますか? 私の目的は、sqliteでトリガを使用してスクリプトを実行することです。sqlite3トリガ内のsqlite3の.shellオプションを呼び出す
documentationは、UPDATE/INSERT/DELETE/SELECTステートメントだけがトリガー本体で許可されることを示しています。 (そして.shell
はとにかくSQL文ではありません。それはsqlite3
コマンドラインシェルでのみ実装されています。)
スクリプトを実行する唯一の方法は、あなたがしてダミーのクエリでそれを使用して実行することができcreate a user-defined functionにあります:
CREATE TRIGGER ...
BEGIN
SELECT run_script('echo "hi"');
END;
(データベースがこの機能をインストールしていないいくつかの他のプログラムによって使用されている場合、このトリガーは失敗します。)
は永続的なUDFを作成するにはどのような方法があり、私の知る限りで検索して、UDFのを試してみましたdbが接続されるまで使用できます。その後、そのUDにアクセスしようとするとエラーがスローされますFのsqliteターミナル。 –
いいえ。 UDFは、データベースではなくアプリケーションによって作成されます。 –
私は、UDFがいくつかのsqlite APIのryt、??(sqlite_create_function())を使ってアプリケーションによって作成されていることを知っています。アプリケーションによって作成されたこの関数は、そのアプリケーションの範囲外では機能しませんか?私はこのAPIによって作成された関数がデータベースに書き込まれると考えています –