ситуация вот какая: есть таблица в бд Postgresql,в ней есть поле "статус". Требуется выполнить некий кусок Java-кода, при любом изменении статуса. Подскажите, пожалуйста, какими средствами можно это сделать?
Можно создать триггер в базе:
CREATE OR REPLACE FUNCTION notify() RETURNS TRIGGER AS $$
BEGIN
SELECT pg_notify('status', TG_TABLE_NAME);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER table_change
AFTER UPDATE OF STATUS ON table_name
FOR EACH ROW EXECUTE PROCEDURE notify();
А на стороне Java приложения слушать это событие при помощи (pgjdbc-ng-0.6-complete.jar):
import com.impossibl.postgres.api.jdbc.PGConnection;
import com.impossibl.postgres.api.jdbc.PGNotificationListener;
import com.impossibl.postgres.jdbc.PGDataSource;
import java.sql.Statement;
public static void listenToMessage(){
PGDataSource dataSource = new PGDataSource();
dataSource.setHost("localhost");
dataSource.setPort(5432);
dataSource.setDatabase("database_name");
dataSource.setUser("user");
dataSource.setPassword("password");
PGNotificationListener listener = (int processId, String channelName, String payload)
-> System.out.println(payload);
try (PGConnection connection = (PGConnection) dataSource.getConnection();
Statement statement = connection.createStatement()){
statement.execute("LISTEN status");
connection.addNotificationListener(listener);
while (<условие закрытия соединения>){ }
} catch (Exception e) {
System.err.println(e);
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть два потока, которые обращаются к одному классу, который делает запрос в БДМне необходимо сделать так, что бы они физически не могли сделать...
Как правильно реализовать анимацию градиента SVG элемента под углом и с задержкой?
Пишу приложение, в котором есть тренировки, состоящие из упражненийСоздаю такие модели: