Copyright 1999 (c) Takezou
<目次>
Notification機能を使用することで、バックエンドからフロントエンドへの非同期の通知を行うことができます。例えば、他のクライアントがテーブルのレコードを変更したかどうかを監視したい場合、通常は一定間隔でサーバーにポーリングをかけて調べるという方法が取られますが、この場合、サーバおよびネットワークにそれなりの負荷がかかります。Notificationとルール機能を組み合わせることにより、ポーリングを行わずに、これらのイベントを受け取ることが可能になります。NotificationはlibpqのPQnotifies関数をNotificationIntervalで指定された間隔呼び出すことにより行われますが、この関数呼び出しはlibpqに対して、バックエンドから通知が来ているか問い合わせるだけなのでトラフィックは発生しません。
PSQLから以下のコマンドを実行し、テーブルを作成します。
CREATE TABLE notifytable (Colum1 text);
CREATE RULE notifyrule1 AS ON INSERT TO notifytable DO
[NOTIFY testinsert];
CREATE RULE notifyrule2 AS ON UPDATE TO notifytable DO
[NOTIFY testupdate];
以上でnotifytableにデータが追加されたときに"testinsert"イベントが、データが変更されたときに"testupdate"イベントが発生するようになりました。
procedure TPQChatForm.PQCompo1PQNotify(Sender: TObject;
PID: Integer; EventName: String);
begin
if EventName = 'testinsert' then
ShowMessage('データが追加されました。')
else
if EventName = 'testupdate' then
ShowMessage('データが変更されました。');
end;
end ;
<戻る>