Вызывать событие из MySQL и обрабатывать его из VB.NET (или что-то подобное)? - PullRequest
0 голосов
/ 20 января 2010

Я работаю с MySQL 5.1.39 и Visual Studio 2008 и соединяюсь с MySQL Connector Net 6.1.2.

Что я хотел бы сделать, так это создать объект MySqlConnection, чтобы иметь возможность обрабатывать «событие, возникающее» при обновлении поля в определенной строке в данной таблице.

Я имею в виду, что когда это значение в этой таблице было изменено или изменено вручную из любого другого приложения, я хотел бы получить сигнал в моем открытом приложении VB.NET. До сих пор я делал это из открытого приложения VB.NET, проверяя эту таблицу каждые X секунд, но мне интересно, можно ли это сделать лучше.

Большое спасибо за ваше внимание и время.

Ответы [ 3 ]

1 голос
/ 20 января 2010

Я никогда не работал с этим, но я думаю, что "TRIGGER" может быть тем, что вы ищете.

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

1 голос
/ 20 января 2010

В идеале, существует конструкция SIGNAL , которую вы можете использовать для полевых ошибок логики SQL , но она недоступна до MySQL 5.5. Было бы лучше обновить до 5.5, если это вообще возможно.

РЕДАКТИРОВАТЬ: Существует не очень хорошее решение для этого до 5.5. TRIGGER работает для получения обновлений, но не для отправки их за пределы базы данных. Однако будьте осторожны, так как это не сработает, если вы обновляете через действия FOREIGN KEY, такие как CASCADE или UPDATE, так как триггеры не вызываются для этих действий. Так что следите за этим.

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 голосов
/ 20 января 2010

Моей первой мыслью было использование триггера базы данных для запуска какого-то рода уведомлений: сообщения по электронной почте, MOM или что-либо еще. Googling не очень много, хотя. Я нашел один подход, основанный на уведомлении через блокировки: linky . Может быть вменяемый подход ...

О, и в этом сообщении в блоге они также говорят о пользовательских UDF MySQL, которые позволяют выполнять произвольный код при срабатывании триггеров. Видимо есть библиотеки на разных языках. Здесь также есть дублирующий вопрос здесь на stackoverflow. Приветствия

...