![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не работает сообщение (из триггера) [D7, IB7]
Lavrenty © (2007-06-18 22:43:00)Здравствуйте, мастера! Потребовалось мне узнать о событии, происходящем в базе. Решил так: создаю триггер на удаление записи и в нём прописываю выдачу сообщения. И ... ничего.
procedure TForm1.FormShow(Sender: TObject);
begin
IBDBDFP.Connected := true; // коннект к базе
IBDS_DFParvl.Open; // IBDataSet
end;
procedure TForm1.IBEventEventAlert(Sender: TObject; EventName: String;
EventCount: Integer; var CancelAlerts: Boolean);
begin
ShowMessage('Delete Record');
end;
procedure TForm1.btDeleteClick(Sender: TObject);
begin
IBDS_DFParvl.Delete;
IBTransDFP.CommitRetaining;
end;
В IBEvent св-во AutoRegiser:=true; Текст триггера такой:
CREATE TRIGGER AFTER_DEL_DFP_ARVL FOR DFP_ARVL
ACTIVE AFTER DELETE POSITION 0
AS
begin
post_event 'Hello everybody';
end
Всё предельно просто, почти как в книге у Сорокина "DELPHI. Разработка баз данных", да что-то ничего не вижу у себя на экране.
Lavrenty (2007-06-20 12:20:00) [1]
> Desdechado © (20.06.07 12:11) [6]
Всё понял. Спасибо.
Desdechado (2007-06-20 12:11:00) [2]> триггер в одной базе, но что бы он этот лог писал в другую базу?
БД есть сущность целостная, законченная.
Можно, конечно, EXTERNAL TABLE слепить, но к ней доступа все равно из другой БД не будет, пока от первой все не отцепятся.
> Разве читающий запрос меняет метаданные?
C каких пор создание триггеров стало чтением?
Lavrenty (2007-06-20 12:03:00) [3]
> Johnmen © (19.06.07 09:01) [3]
> Создай таблицу типа для лога и пиши туда из триггеров...
А можно в IB71 сделать так: триггер в одной базе, но что бы он этот лог писал в другую базу?
> Desdechado © (19.06.07 11:29) [4]
> почему разрешают изменять метаданные?
Разве читающий запрос меняет метаданные?
Desdechado (2007-06-19 11:29:00) [4]> в режиме: подключился к базе, сделал запрос, отключился.
Глупости. Время подключения/отключения может быть в разы больше времени запроса.
И если они такие жесткие, то почему разрешают изменять метаданные?
Johnmen (2007-06-19 09:01:00) [5]Создай таблицу типа для лога и пиши туда из триггеров....
Lavrenty (2007-06-19 04:49:00) [6]
> Вопрос закрыт
Не совсем. Всё работает если IBDBDFP.Connected := true. Как получить это же сообщение, если коннекта нет. Проблема в том, что база, от которой хочу получать сообщения о событиях в ней, стороннего разработчика и с ней работает комплекс программ от них же. Эти хлопцы разрешают работать с базой (писать для неё длугие проги), но в режиме: подключился к базе, сделал запрос, отключился. Поэтому моя программа большее время будет находится в отключенном от базы состоянии. Но то, что происходит в базе мне надо знать обязательно. Как это сделать?
Lavrenty (2007-06-19 04:04:00) [7]Разобрался. Вопрос закрыт.