Myślę, że możesz osiągnąć coś takiego dość łatwo, zakładając, że nie masz nic przeciwko tworzeniu dodatkowych tabel i wyzwalaczy w swojej bazie danych, oraz że monitorująca aplikacja Java będzie musiała odpytywać bazę danych, a nie specjalnie otrzymywać wyzwalacze.
Zakładając, że tabela, którą chcesz monitorować, wygląda mniej więcej tak:
CREATE TABLE ToMonitor ( id INTEGER PRIMARY KEY, value TEXT );
Następnie tworzysz tabelę do śledzenia zmian i wyzwalacz, który wypełnia tę tabelę:
CREATE TABLE InsertedRecords( value TEXT );
CREATE TRIGGER trig AFTER INSERT ON account
FOR EACH ROW INSERT INTO InsertedRecords( value ) VALUES ( NEW.value );
Spowoduje to, że tabela InsertedRecords zostanie wypełniona każdym wstawieniem, które ma miejsce w ToMonitor.
Następnie wystarczy skonfigurować aplikację monitorującą, aby okresowo SELECT * from InsertedRecords
, podejmij odpowiednie działanie, a następnie usuń rekordy z InsertedRecords
EDYCJA:Niewielką alternatywą, jeśli nie masz nic przeciwko kodowaniu C/C++, byłoby postępuj zgodnie z instrukcjami tutaj aby utworzyć niestandardową funkcję SQL, która uruchomiła Twoją aplikację monitorującą, a następnie po prostu wywołaj tę funkcję SQL z utworzonego wyzwalacza.