更新トリガーにJavaプログラムを実行させます。
テーブルがありますT1
Flag
という名前の列。 Flag
が変更されるたびに、Javaプログラムの実行をもたらすトリガーを実行したいと思います。
これは可能ですか?
はい、 MySQLユーザー定義関数 ( MySQL 5.5 FAQ:Triggers を参照)を使用して lib_mysqludf_sys をインストールします
次に、たとえば、次のようにsys_execを呼び出す独自のトリガーを作成できます。
delimiter |
CREATE TRIGGER testtrigger BEFORE UPDATE ON T1
FOR EACH ROW BEGIN
DECLARE result int(10);
IF NEW.Flag <> OLD.Flag THEN
SET result = sys_exec('/path/to/javabin -jar your.jar');
-- other kind of works and checks...
END IF;
END;
|
result
には、外部プログラムの終了コードが含まれています
このライブラリには他にも便利な関数があります:
詳細 ここ
開発環境で試してみてください...
この関数が必要かどうかを決定する際は十分に注意してください。 UDFはすべてのデータベースユーザーが使用できます-ユーザーにEXECUTE権限を付与することはできません。
sys_exec
に渡されたコマンド文字列はほとんどすべてを実行できるので、関数を公開すると非常にリアルなポーズになりますセキュリティハザード。
しかし、とにかく、私はレムス・ルサヌの提案に同意します
私はこの投稿がかなり古く、それを拾って申し訳ありませんでしたが、最近同じ要件があったため、MySQLトリガー内からJNIを使用してJavaコードを呼び出す)MySQL UDFを作成しました。同様の今後のリクエストの参照としてこれを投稿しています。bitbucketでコードをチェックインしました。ここからダウンロードできます:
MySQLUDFJavaLauncher そして、ここにも Instructions へのリンクがあります。
たぶんこれは他の人を助けるでしょう。