Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: CL | DM;

Вниз

Не работает сообщение (из триггера)   Найти похожие ветки 

 
Lavrenty ©   (2007-06-18 22:43) [0]

Здравствуйте, мастера! Потребовалось мне узнать о событии, происходящем в базе. Решил так: создаю триггер на удаление записи и в нём прописываю выдачу сообщения. И ...  ничего.

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-19 04:04) [1]

Разобрался. Вопрос закрыт.


 
Lavrenty ©   (2007-06-19 04:49) [2]


> Вопрос закрыт

Не совсем. Всё работает если IBDBDFP.Connected := true. Как получить это же сообщение, если коннекта нет. Проблема в том, что база, от которой хочу получать сообщения о событиях в ней, стороннего разработчика и с ней работает комплекс программ от них же. Эти хлопцы разрешают работать с базой (писать для неё длугие проги), но в режиме: подключился к базе, сделал запрос, отключился. Поэтому моя программа большее время будет находится в отключенном от базы состоянии. Но то, что происходит в базе мне надо знать обязательно. Как это сделать?


 
Johnmen ©   (2007-06-19 09:01) [3]

Создай таблицу типа для лога и пиши туда из триггеров....


 
Desdechado ©   (2007-06-19 11:29) [4]

>  в режиме: подключился к базе, сделал запрос, отключился.
Глупости. Время подключения/отключения может быть в разы больше времени запроса.
И если они такие жесткие, то почему разрешают изменять метаданные?


 
Lavrenty ©   (2007-06-20 12:03) [5]


> Johnmen ©   (19.06.07 09:01) [3]
> Создай таблицу типа для лога и пиши туда из триггеров...

А можно в IB71 сделать так: триггер в одной базе, но что бы он этот лог писал в другую базу?

> Desdechado ©   (19.06.07 11:29) [4]
> почему разрешают изменять метаданные?

Разве читающий запрос меняет метаданные?


 
Desdechado ©   (2007-06-20 12:11) [6]

> триггер в одной базе, но что бы он этот лог писал в другую базу?
БД есть сущность целостная, законченная.
Можно, конечно, EXTERNAL TABLE слепить, но к ней доступа все равно из другой БД не будет, пока от первой все не отцепятся.

> Разве читающий запрос меняет метаданные?
C каких пор создание триггеров стало чтением?


 
Lavrenty ©   (2007-06-20 12:20) [7]


> Desdechado ©   (20.06.07 12:11) [6]

Всё понял. Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
15-1191529956
sdubaruhnul
2007-10-05 00:32
2007.10.28
Так кто-нибудь объяснит, почему ветки про спутник закрывают?


1-1186991430
Adventure
2007-08-13 11:50
2007.10.28
Утечка памяти.....


2-1191764615
xayam
2007-10-07 17:43
2007.10.28
Вопрос по InterBase 6.5/IBExpert


2-1191918318
Riply
2007-10-09 12:25
2007.10.28
Внутренняя механика работы NtOpenFile.


9-1162107438
Alexseve
2006-10-29 10:37
2007.10.28
хочу повернуть бочку