0

MySQL5.1.39とVisualStudio2008を使用しており、両方をMySQL ConnectorNet6.1.2に接続しています。

私がやりたいのは、MySqlConnectionオブジェクトが作成されたら、特定のテーブルの特定の行のフィールドが更新されたときに「発生したイベント」を処理できるようにすることです。

つまり、そのテーブルの値が他のアプリケーションから手動で変更または変更された場合、開いているVB.NETアプリケーションでシグナルを受信したいと思います。これまでは、開いたVB.NETアプリケーションからX秒ごとにそのテーブルをチェックして実行していましたが、もっと良い方法で実行できるのではないかと思います。

ご清聴ありがとうございました。

4

3 に答える 3

1

私はそれを使ったことがありませんが、「TRIGGER」はあなたが探しているものかもしれないと思います。

http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html

于 2010-01-20T18:19:24.300 に答える
1

理想的には、SQLロジックエラーを処理するために使用できるSIGNAL構造がありますが、これはMySQL5.5まで使用できません。可能であれば、5.5にアップグレードするのが最善です。

編集: 5.5より前のこれに対する良い解決策は本当にありません。TRIGGERは更新を取得するために機能しますが、データベースの外部に送信するためには機能しません。ただし、CASCADEやUPDATEなどのFOREIGN KEYアクションを介して更新している場合、これらのアクションに対してTRIGGERが呼び出されないため、これは機能しないので注意してください。だから、それに気をつけてください。

DELIMITER $$
CREATE TRIGGER my_trigger_name AFTER UPDATE ON my_table_name
FOR EACH ROW BEGIN
    CALL my_on_update_procedure(NEW.entry_name, NEW.whatever_else)
END $$

DELIMITER ; 

my_on_update_procedureが行うことはあなた次第です。あなたのソリューションはおそらく5.1.39(スケーラビリティの問題のためにロックすることはお勧めしません)の最善の策ですが、5.5はあなたがまさに望むものであるSIGNAL構造を提供します(アップグレードしてください!)。

于 2010-01-20T18:22:54.447 に答える
0

私が最初に考えたのは、データベーストリガーを使用して、ある種の通知をトリガーすることでした。電子メールやMOMなどを介したメッセージです。しかし、グーグルはあまり上がらなかった。ロックを介した通知に基づく1つのアプローチを見つけました:linky。正気のアプローチかもしれません...

ああ、そのブログ投稿では、トリガーが起動したときに任意のコードを実行できるMySQLUDFについても説明しています。どうやら、さまざまな言語へのライブラリがあります。ここにstackoverflowに関する重複した質問もあります。乾杯

于 2010-01-20T18:16:07.790 に答える