2012-02-23 6 views
0

У меня есть база данных, например SQL и получение фидов из 3-х сторон в мою базу данных (обновление каждый раз). Мне нужно получить уведомление моего приложения, когда, как нелогич-:Получить уведомление из базы данных

select * form table Bonus > 50%

Должен ли я использовать окно службы и проверить все базы данных или я могу установить его в SQL и получить предупреждение от SQL? Я должен получить уведомление как можно скорее, чтобы проверять базу данных каждые 1 или 5 секунд, это будет слишком сложно.

ответ

3

Это зависит от вашей базы данных. Почти все базы данных могут запускать триггеры при изменении данных, но код внутри триггера обычно является SQL (который не поддерживает открытие соединений и т. П.).

Некоторые, такие как Oracle, разрешают триггеры, и они также могут запускать Java-код. Здесь вы можете создать решение внутри базы данных.

Но есть недостаток: что произойдет, если сигнал не может быть отправлен? Если вся транзакция будет отклонена (что может нанести ущерб другим, относительно несвязанным услугам.

Таким образом, обычное решение состоит в том, чтобы написать код, который запускает запрос каждый час или около того, а затем отправляет сигнал, когда условие выполнено.

Если запрос стоит дорого, то вы можете смешать два: выполнить запрос только тогда, когда что-то изменилось (с помощью триггера) и сохранить результат в таблице (например, «что-то произошло в $ timestamp»). , просто проверьте, было ли обновление с момента последнего сигнала.