2017-09-18 13 views

答えて

1

documentationは、UPDATE/INSERT/DELETE/SELECTステートメントだけがトリガー本体で許可されることを示しています。 (そして.shellはとにかくSQL文ではありません。それはsqlite3コマンドラインシェルでのみ実装されています。)

スクリプトを実行する唯一の方法は、あなたがしてダミーのクエリでそれを使用して実行することができcreate a user-defined functionにあります:

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

(データベースがこの機能をインストールしていないいくつかの他のプログラムによって使用されている場合、このトリガーは失敗します。)

+0

は永続的なUDFを作成するにはどのような方法があり、私の知る限りで検索して、UDFのを試してみましたdbが接続されるまで使用できます。その後、そのUDにアクセスしようとするとエラーがスローされますFのsqliteターミナル。 –

+0

いいえ。 UDFは、データベースではなくアプリケーションによって作成されます。 –

+0

私は、UDFがいくつかのsqlite APIのryt、??(sqlite_create_function())を使ってアプリケーションによって作成されていることを知っています。アプリケーションによって作成されたこの関数は、そのアプリケーションの範囲外では機能しませんか?私はこのAPIによって作成された関数がデータベースに書き込まれると考えています –