3

「永続的な」UDFをSQLite 3(CまたはPHPを使用)または同等のものに登録する方法を知っている人はいますか? C または PHP API を使用して UDF をコールバック関数として登録できることはわかっていますが、その関数はアプリケーションのデータベースへのハンドルがある限り有効です。

MySQL では、「CREATE FUNCTION my_udf RETURNS INTEGER SONAME 'shared_lib_containing_my_udf.so'.

これが必要な理由は、「アプリケーション B」がデータを挿入、更新、または削除したときに、UDF を呼び出すトリガーを使用して「アプリケーション A」に通知する必要があるためです。DBを操作するアプリケーションはPHPのWebアプリケーションです。したがって、UDF を永続化できない場合は、Web 要求ごとに UDF を登録する必要があります。また、アプリケーションが Web 要求ごとに複数の接続を開く場合は、要求ごとに UDF を複数回登録する必要さえあります。 . これはおそらく、多くの場所でアプリケーションを変更しなければならないことを意味しますが、これは本当に避けたいことです。

これが不可能な場合、誰かが別の解決策を持っていますか?

4

1 に答える 1

1

唯一の解決策は、SQLiteソースを変更して必要な機能を追加することだと思われます。これは、展開の問題のために私のシナリオでは機能しません。そのため、SQLiteを完全に放棄して、MySQLまたはPostgreSQLに切り替える必要があります。SQLiteに、MySQLでUDFを実装する方法のように、再コンパイルせずにカスタム関数で拡張するための何らかのプラグインメカニズムがあればいいのにと思います。ただし、それによって「ライト」が大幅に少なくなる可能性があります。私はSQLiteが大好きですが、それはすべてに適したツールではありません。

于 2012-06-19T14:20:06.830 に答える