0

SQLite では、SQL ステートメントから呼び出すことができるカスタム関数を定義できます。

このメカニズムを使用して、アプリケーションでのトリガー アクティビティの通知を取得しようとしています。つまり、次のようなものです。

CREATE TRIGGER AfterInsert AFTER INSERT ON T
BEGIN
  -- main trigger code involves some extra db modifications
  -- ...

  -- invoke application callback
  SELECT ChangeNotify('T', 'INSERT', NEW.id);
END;

ただし、ユーザー定義関数は現在のデータベース接続にのみ追加されます。を定義していない他のクライアントが存在する可能性があり、ChangeNotifyそれらにno such functionエラーが発生することは望ましくありません。定義されている場合にのみ関数を呼び出すことは可能ですか?

代替ソリューションも高く評価されます。

4

2 に答える 2

2

SQLite は組み込みデータベースとして設計されているため、アプリケーションがデータベースの処理を制御すると想定されています。

SQLite には、ユーザー定義関数をチェックする SQL 関数がありません。

自分のプログラムからのみ行われた変更を検出したい場合は、sqlite3_update_hookを使用してください。

于 2013-03-29T10:35:00.247 に答える