0

我正在使用 MySQL 5.1.39 和 Visual Studio 2008,并使用 MySQL Connector Net 6.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

理想情况下,有SIGNAL构造,您可以使用它来处理 SQL 逻辑错误,但直到 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 构造,这正是您想要的(所以升级!)。

于 2010-01-20T18:22:54.447 回答
0

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

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

于 2010-01-20T18:16:07.790 回答