Могут ли триггеры или хранимые процедуры MySQL быть написаны на Java? - PullRequest
1 голос
/ 22 марта 2011

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

Фактически, одна база данных - это старая устаревшая база данных (с очень плохой структурой Entity-Relationship) и интерфейс старого приложения, который в настоящее время используется пользователями.Вторая база данных - это новая, более совершенная реструктуризация устаревшего приложения с отдельным приложением.front-end.

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

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

Мой вопрос:

  • Является ли моя линия исполнения такой, какой она должна быть?Я имею в виду, triggers >call> stored procedures >call> database.
  • Могут ли триггеры / хранимые процедуры быть написаны на Java?
  • Есть ли здесь какие-нибудь хорошие / рекомендуемые советы, учебные пособия и т. Д.?

ТамЕсть много ссылок на Google, но ни одна из них не является полезной.Интересно, работают ли MySQL и Java вместе, когда дело доходит до триггеров MySQL?это возможно или нет?Есть ли лучший способ добиться того, что мне нужно?

1 Ответ

2 голосов
/ 22 марта 2011

Триггерами являются именованные объекты базы данных .Они определяют некоторые действия, которые должна выполнять база данных при возникновении определенных событий, связанных с базой данных.Они написаны на SQL.Их исполнение прозрачно для пользователя.Вы пишете свой Java JDBC-код как обычно, и СУБД автоматически выполнит соответствующий триггер при необходимости.

mysql> delimiter //
mysql> CREATE TRIGGER insert_trigger BEFORE INSERT ON Customer
    -> FOR EACH ROW
    -> BEGIN
    -> UPDATE Customer SET Price=Price-10 WHERE CustomerGroup=32 and CityCode=11;
    -> END;
    -> //

В этом примере показано, как выполнить триггерную запись в другую базу данных.Будьте осторожны с атрибутами автоинкремента.

Я думаю, вы должны забыть о хранимых процедурах Java в MySQL, но вы всегда можете перенести бизнес-логику в свою собственную программу Java.

...