2010-01-20 91 views
0

我正在使用MySQL 5.1.39和Visual Studio 2008,並將它們與MySQL Connector Net 6.1.2連接起來。從MySQL引發事件並從VB.NET(或類似的東西)處理它?

我想要做的是一旦創建了MySqlConnection對象,當給定表中的特定行中的字段被更新時,能夠處理「引發的事件」。

我的意思是,當該表中的值已經被任何其他應用程序手動修改或修改時,我想在打開的VB.NET應用程序中收到一個信號。直到現在,我從打開的VB.NET應用程序每隔X秒檢查一次該表執行它,但我想知道它是否可以以更好的方式完成。

非常感謝您的關注和時間。

回答

1

理想的情況下,有SIGNAL結構,它可以use to field SQL logic errors,但不可用,直到MySQL的5.5。如果可能的話,最好升級到5.5。

編輯: 5.5之前沒有一個很好的解決方案。 TRIGGER適用於獲取更新,但不適用於在數據庫之外發送更新。但是,請小心,因爲如果您通過FOREIGN KEY操作(如CASCADE或UPDATE)更新,則這不起作用,因爲不會爲這些操作調用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構造,這正是你想要的(所以升級!)。

+0

但5.5不是GA版本(目前是5.1.42我認爲)。無論如何,我一定會看看SIGNAL功能。我真的不知道它的存在,似乎它可能是正確的解決方案。非常感謝這些信息,特拉維斯。 – 2010-01-21 08:05:33

+0

我正在與里程碑2發佈,這對我來說已經完全穩定(雖然承認我的負載不高),這是一個好兆頭。 – 2010-01-21 08:10:44

0

我的第一個想法是使用數據庫觸發器來觸發某種形式的通知:通過電子郵件,MOM或其他任何方式的消息。谷歌搜索沒有太大的變化。我發現了一種基於鎖通知的方法:linky。可能是一個理智的方法...

哦,在那篇博文中他們還談到了MySQL UDF,它可以讓你在觸發器觸發時執行任意代碼。顯然有各種語言的庫。在stackoverflow上還有一個duplicate question。乾杯

+0

感謝您的這些信息。我保證在發佈這個問題之前我使用了搜索功能,但是沒有發現任何東西(我的錯,我想我搜索得不夠好!)。 – 2010-01-21 08:12:09

1

我從來沒有用過,但我認爲「TRIGGER」可能是你要找的。

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

+0

也許我錯了,但我不認爲觸發器是我正在尋找的有效解決方案。我一直在使用觸發器,並且可以在觸發器上進行操作,當我的監視行被更新時,我可以對數據庫進行操作,是的,但是我無法通過連接器網絡向VB.NET應用程序發送事件/信號。或者至少我不知道該怎麼做。 但是,無論如何,當然。 – 2010-01-21 08:00:01

相關問題