Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с триггером [D7, IB71]


Lavrenty ©   (2007-06-26 20:27:00) 

Здраствуйте все!
Создаю триггер(для table1) в IBExpress на обновление таблицы(table2) и вдруг во время предварительной компиляции выясняется, что данного поля в этой таблице не существует(Column does not belong to referenced table...Column unknown.AP1_EN). Что-то не пойму, неужто триггер не может обновить другую таблицу?

ALTER TRIGGER ALLOC_ARRIVAL_UPD
ACTIVE AFTER UPDATE POSITION 2
AS
declare variable ap1_engl char(30);
declare variable ap2_engl char(30);
declare variable ap3_engl char(30);
begin
 select airport_name_e
       from airport
       where dfp_arrival.ap1 = airport.airport_name into ap1_engl;
 select airport_name_e
       from airport
       where dfp_arrival.ap2 = airport.airport_name into ap2_engl;
 select airport_name_e
       from airport
       where dfp_arrival.ap3 = airport.airport_name into ap3_engl;
 select airport_name_e
       from airport
       where dfp_arrival.ap001 = airport.airport_name into ap001_engl;

 update new_table
   set

/* здесь поля, с которыми всё в порядке */

       ap1 =                   new.ap1;
       ap1_en =                ap1_engl;

/* здесь несколько других строк, до которых компиляция ещё не дошла*/

end


atruhin   (2007-06-27 14:20:00) [1]

> В тех источниках, которые использую, очень скудно описаны триггеры.

Ну дак не используй ТЕХ источников! Есть официальная документация, там все это описанно.
Чего еще нужно. 4 года работаю с IB-FB до сих пор хватало этих книг.
Interbase Language reference
Interbase programmers guide
Interbase Data definition guide
Все книги доступны в электронном виде.
PS/ Ну и кончно
> [5] Johnmen ©   (26.06.07 21:23)

С www.ibase.ru ВСЕ статьи прочитать обязательно.


Johnmen   (2007-06-26 21:23:00) [2]

Изучать ресурс www.ibase.ru вдоль и поперёк!


Lavrenty   (2007-06-26 21:17:00) [3]


> Должно быть или old.ap1  или new.ap1 вместо dfp_arrival.
> ap1

Ещё раз спасибо! Просто первый раз в жизни пишу триггер. :)

Вопрос в догонку. В тех источниках, которые использую, очень скудно описаны триггеры. Так вот, там ничего не сказано на счёт двоеточия перед переменными, объявляемые в триггере, т.е. когда их уже использую в теле триггера и даже примеры даны без оных(' :' ). Но при компиляции IBExpert ругается - нет такого поля, говорит. Ставлю двоеточие - ничего не говорит.
Выходит надо всё-таки двоеточие ставить?


turbouser   (2007-06-26 21:00:00) [4]


> Lavrenty ©   (26.06.07 20:56) [2]

Должно быть или old.ap1  или new.ap1 вместо dfp_arrival.ap1


Lavrenty   (2007-06-26 20:56:00) [5]


> turbouser ©   (26.06.07 20:42) [1]

>        where dfp_arrival.ap1 /*-это что такое? Откуда?*/

CREATE TRIGGER ALLOC_ARRIVAL_UPD FOR DFP_ARRIVAL

>        ap1 =                   new.ap1; /*может все-таки запятая должна быть вместо ; ?*/

Правильно, Ватсон!      :-))))))  
Спасибо!


turbouser   (2007-06-26 20:42:00) [6]

Ужас.

>  select airport_name_e
>        from airport
>        where dfp_arrival.ap1/*-это что такое? Откуда?*/ = airport.airport_name into
> ap1_engl;




>
>  update new_table
>    set
>
> /* здесь поля, с которыми всё в порядке */
>
>        ap1 =                   new.ap1; /*может все-таки запятая должна быть вместо ; ?*/
>        ap1_en =                ap1_engl;


Наверх

Титульная страница Поиск, карта сайта Написать письмо