从MySQL提出事件并从VB.NET(或类似的东西)处理它?

时间:2010-01-20 18:10:04

标签: mysql visual-studio-2008 events mysql-connector

我正在使用MySQL 5.1.39和Visual Studio 2008并将它们与MySQL Connector Net 6.1.2连接。

我想要做的是,一旦创建了MySqlConnection对象,就能够在更新给定表中特定行中的字段时处理“事件引发”。

我的意思是,当该表中的值已经从任何其他应用程序手动更改或修改时,我希望在我打开的VB.NET应用程序中收到一个信号。到目前为止,我是从打开的VB.NET应用程序每隔X秒检查一次该表,但我想知道它是否可以以更好的方式完成。

非常感谢您的关注和时间。

3 个答案:

答案 0 :(得分:1)

我从未与之合作,但我认为“TRIGGER”可能就是你想要的。

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

答案 1 :(得分: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结构,这正是您想要的(因此升级!)。

答案 2 :(得分:0)

我的第一个想法是使用数据库触发器来触发某种通知:通过电子邮件,MOM或其他任何方式发送消息。谷歌搜索没有变得太多。我找到了一种基于锁通知的方法:linky。可能是一个理智的方法......

哦,在那篇博文中,他们还讨论了MySQL UDF,它允许你在触发器触发时执行任意代码。显然有各种语言的库。 stackoverflow上还有一个duplicate question。干杯