Поиск:

Ответ в темуСоздание новой темы Создание опроса
> NOTIFY и LISTEN в PostgreSQL, и с чем их едят 
:(
    Опции темы
RockClimber
Дата 1.9.2009, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Прочитал в доках по постгресу про две команды - NOTIFY и LISTEN. Вроде бы с помощью них можно получать от СУБД уведомления о заранее определенных событиях... Например, у меня есть таблица table1 с полем id, которое является первичным ключом. Нужно отловить изменение этого поля и среагировать на него (например, обновить датасет). А как это в коде будет выглядеть? 


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Slam23
Дата 6.5.2010, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.4.2010

Репутация: нет
Всего: нет



Поддерживаю 
RockClimber, неужели никто не работал с командами LISTEN/NOTIFY, в нете про них почти нет инфы, есть описание синтаксиса команд, а как их применить на практике хотелось бы узнать, если кто поможет буду признателен.
PM MAIL   Вверх
Asm64D
Дата 10.5.2010, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.8.2008

Репутация: нет
Всего: нет



Все зависит от компонентов доступа, например для MicroOLAP PostgresDAC
Цитата(TPSQLNotify)

TPSQLNotify provides the interface to PostgreSQL Asynchronous Notification functionalities. To learn how does PostgreSQL Asynchronous Notification work, please see Asynchronous Notification section of PostgreSQL documentation.

Use TPSQLNotify to organize notifications between client applications about their actions through Postgres database server.

To use TPSQLNotify you should do the following:

1. Create a rule for table on which changes you want to be notified:
Код

create rule InsertDetect as on INSERT to notify_test do notify recinsert

2. Add recinsert to ListenList property of TPSQLNotify component;
3. Write event handler for OnNotify event:
Код

procedure TForm1.PSQLNotify1Notify(Sender: TObject; Event: String; Pid : Integer);
begin
   if PID <> DB.GetBackendPID then  // If it is not me...
      Memo1.Lines.Add(
      Format('Client (PID=%d) just modified (event = %s) table notify_test. Press Refresh',
      [PID, Event]));
end;

4. Link Database property of TPSQLNotify component to PSQLDatabase component;
5. To begin listen notifications, set Active property of TPSQLNotify to True.
After compilation you can see rows insertions in Memo1 component when other clients make inserts in notify_test table. Also you can do the same for DELETE and UPDATE events.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1115 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.