2012-02-23 1 views
0

J'ai base de données par exemple SQL et obtenir des flux à partir de 3 dans ma base de données (mise à jour à chaque fois). Je dois recevoir une notification à ma demande quand comme examle:Obtenir la notification de la base de données

select * form table Bonus > 50%

Dois-je utiliser les services Windows et vérifier toutes les bases de données ou puis-je mettre en sql et obtenir alerte à partir de SQL? Je devrais recevoir une notification dès que possible afin de vérifier la base de données toutes les 1 ou 5 secondes, il sera trop difficile.

Répondre

3

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

Questions connexes