Cela dépend de votre base de données. Presque toutes les bases de données peuvent exécuter des déclencheurs lorsque les données sont modifiées, mais le code à l'intérieur du déclencheur est généralement SQL (qui ne prend pas en charge les connexions d'ouverture et autres).
Certains, comme Oracle, autorisent les déclencheurs et peuvent également exécuter du code Java. Ici, vous pourriez construire une solution dans la base de données.
Mais il y a un inconvénient: Que se passe-t-il si le signal ne peut pas être envoyé? L'ensemble de la transaction doit-elle être annulée (ce qui affecterait d'autres services relativement sans rapport)
La solution habituelle consiste donc à écrire du code qui exécute la requête en question toutes les heures environ, puis envoie le signal lorsque la condition est remplie. Si la requête est coûteuse, vous pouvez mélanger les deux: Exécuter la requête uniquement lorsque quelque chose a changé (en utilisant le déclencheur) et enregistrer le résultat dans une table (comme "quelque chose est arrivé à $ timestamp). , vérifie s'il y a eu une mise à jour depuis le dernier signal