Пинг таблицы в базе данных с Java - PullRequest
1 голос
/ 12 декабря 2011

Мне было интересно, можно ли продолжать пинговать таблицу оракула, пока строка не будет добавлена ​​или удалена.

Я хочу начать следующее действие после того, как получу подтверждение, что строка была добавлена ​​или удалена.Предпочтительный метод - это запрос, который продолжает пинговать, пока не произойдет.Обычно при запросах я использую метод executeQuery, но он возвращается только тогда, когда он дает результаты

Я еще не нашел метод, который мог бы это сделать.

Так что кто-нибудь знает способ сделатьэто?

Ответы [ 2 ]

4 голосов
/ 12 декабря 2011

В Oracle 11g вы можете использовать Уведомление об изменении базы данных .Вместо того, чтобы опрашивать базу данных для проверки изменений, вы регистрируетесь для получения события, когда происходит изменение.Вот пример исходного кода здесь .

Если вы решите вместо этого провести опрос, то вам следует внимательно рассмотреть ваш запрос.Например, использование количества строк в таблице - SELECT COUNT(*) FROM your_table - может дать неправильный ответ, если одинаковое количество строк было добавлено и удалено из таблицы между двумя выполнениями вашего запроса.

0 голосов
/ 12 декабря 2011

Я не знаком с Oracle, поэтому я предложу вам независимый от базы данных подход.

Вы удаляете или «деактивируете» записи в своих таблицах?Если вы «инактивируете», вы можете поддерживать столбец «Версия» в каждой строке, ++'ing в каждой операции CUD.Например, когда вы создаете новую строку, ее версия 1.После первого обновления 2 и так далее.

Таким образом, вместо того, чтобы полагаться на SELECT COUNT(*) ..., вы можете положиться на SELECT SUM(VERSION) ....;)

Вы также можете работать с журналом аудита - проверять каждую операцию CUD в каждой таблице - и опрашивать журнал аудита вместо таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...