Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 1.654 c
15-1190735781
ferdinando
2007-09-25 19:56
2007.10.28
Есть один человек...


15-1190911523
Дима Вид
2007-09-27 20:45
2007.10.28
Оля


3-1182508157
AleksandrR
2007-06-22 14:29
2007.10.28
Рисунок в DBGrid


2-1191579972
Mariya
2007-10-05 14:26
2007.10.28
Объявление переменной


3-1182499435
Sergey__
2007-06-22 12:03
2007.10.28
Генераторы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский