Java, запускаемый MySQL trigger

Я пытаюсь создать некоторый код MySQL, который вызовет программу Java из триггера.

вот что у меня пока есть:

CREATE TRIGGER trig_name after insert ON studentinfo 
FOR EACH ROW
BEGIN

END

содержимое триггера затем вызовет программу Java. Возможно ли это?

4 ответов


прямой ответ: Нет, вы не можете вызвать метод java из триггера mysql. Если бы у вас была база данных oracle, вы могли бы, но не mysql.

чтобы сделать то, что вы хотите сделать с mysql, вы можете

  • сделайте код, который обновляет базу данных, также уведомляет приложение swing. Или вы можете
  • заставьте триггер накапливать данные о ожидающих операциях в отдельной таблице, которую вы периодически читаете из приложения swing.

хотя это не стандартная функция, это очень хорошо возможно с MySQL. Вы можете использовать SELECT .. В OUTFILE оператор изнутри триггера для записи в именованный канал (Windows) или файловую систему memroy (Linux). Оба из них можно легко контролировать из кода Java (или любого другого кода, если на то пошло). Используя этот метод, вы избежите опроса, и поскольку фактический доступ к диску не происходит, у вас будет хорошая производительность.

Я написал пакет Java для этого на самом деле, я на 100% уверен, что это возможно и хорошо работает. К сожалению, мне не разрешено делиться своими усилиями здесь (мой предыдущий ответ был удален модератором), поэтому вам придется кодировать его самостоятельно, извините.


вызов метода java из базы данных SQL не является стандартной функцией. БД Informix может вызывать сценарий оболочки из хранимой процедуры, но я не знаю такой функции в MySQL (я не эксперт по mysql).

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

SELECT * FROM studentinfo WHERE id > last_seen_id

или вы можете использовать метку времени:

SELECT * FROM studentinfo WHERE create_date >= last_seen_create_date

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


Я должен не согласиться с Джони, посмотрите это:
MySQLUDFJavaLauncher
- инструкции