![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с триггером [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;