.NET

Notifications

La section Notifications écoute les notifications asynchrones que les sessions envoient par l’intermédiaire de la base de données elle-même, et les affiche au fur et à mesure de leur arrivée :

MySQL, MariaDB, SQL Server et SQLite n’ont pas d’équivalent ; pour eux, la section affiche Les canaux de type NOTIFY ne sont pas pris en charge pour les connexions …. au lieu de masquer la fonctionnalité.

Ouvrir la section

Cliquez sur l’icône Notifications dans la barre de navigation de gauche. La section partage la bande des onglets de connexion ouverts avec la section Base de données — sélectionnez un onglet pour voir les canaux et les messages de cette connexion. Si aucune connexion n’est ouverte, elle affiche Aucune connexion ouverte. et vous invite à en ouvrir une d’abord dans le panneau Base de données.

L’écoute ne dépend pas de la visibilité de la section Notifications : dès qu’une connexion est ouverte dans la section Base de données, OmniDB commence à écouter ses canaux enregistrés (via une connexion distincte et dédiée, de sorte qu’elle n’interfère jamais avec vos onglets Requête ou Console), et cesse lorsque cet onglet de connexion est fermé.

Canaux

La partie gauche de la section est une arborescence avec une racine Canaux. Pour ajouter un canal, cliquez sur + sous l’arborescence (ou clic droit sur l’arborescence → Ajouter un canal), saisissez le Nom du canal et appuyez sur Entrée. OmniDB commence immédiatement à l’écouter. Les noms d’alertes Oracle sont limités à 30 octets, les noms d’événements Firebird à 255.

Un clic droit sur un canal propose :

Les canaux et leur état en pause/actif sont enregistrés par utilisateur d’OmniDB et par connexion ; ils réapparaissent donc après un redémarrage. Les noms de canaux PostgreSQL sont utilisés comme identifiants entre guillemets, sensibles à la casse.

Messages

Les messages reçus apparaissent à droite dans un tableau comportant les colonnes Canal, Heure (moment où OmniDB l’a reçu) et Contenu. Les événements Firebird n’ont pas de contenu : pour eux, Contenu indique combien de fois l’événement a été publié.

La rangée de cases à cocher au-dessus du tableau filtre la liste : Tous les canaux, ou seulement les canaux que vous cochez. Tout effacer vide toute la liste.

Les messages ne sont conservés que dans le navigateur (ou la fenêtre de l’application de bureau) qui les a reçus : ils ne sont stockés nulle part et disparaissent après un rechargement de la page.

Si les messages arrivent plus vite que la page ne les traite, OmniDB cesse d’écouter plutôt que de les laisser s’accumuler sans limite ; l’écoute s’arrête également si la connexion d’écoute échoue. Dans les deux cas, un bandeau en explique la raison, avec un bouton Redémarrer l’écoute.

The Notify section with received messages

Envoyer une notification de test

Les notifications s’envoient en SQL ordinaire, par exemple depuis un onglet Requête sur la même base de données :

-- PostgreSQL (délivrée lors de la validation de la transaction)
NOTIFY my_channel, 'hello';
SELECT pg_notify('my_channel', 'hello');

-- PostgreSQL, nom de canal avec des majuscules : le mettre entre guillemets
NOTIFY "MyChannel", 'hello';

-- Oracle
BEGIN
  DBMS_ALERT.SIGNAL('my_alert', 'hello');
  COMMIT;
END;

-- Firebird (l’événement est publié lors du commit)
EXECUTE BLOCK AS BEGIN POST_EVENT 'my_event'; END