![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Умный триггер в InterBase [D7, IB6.x]
RomanH © (2006-04-07 15:30:00)Здраствуйте мастера. Существует 2 таблицы Men и TMen
MenID MFam | TMenID TMFam TMAction
00001 AAAA | 10001 BBBBB 1
Пишу такой триггер чтобы добавить запись в таблицу Men необходимо сначало проверить TMenID, если он меньше 10 000,
то New.MenID=Gen_ID(Gen_Men,1):
create trigger bef_ins_men for men
active before insert
as
declare variable men_ID integer;
declare variable Men_action integer;
begin
select TMenID,TMAction from MenT where TMenID<10000 into :men_ID,Men_action;
if (:men_id<10000) then new.menid=gen_id(gen_men,1);
end
Ни как не соображу
Desdechado (2006-04-07 16:25:00) [1]1. Зачем выбирать 2 поля, чтоб сравнивать потом одно?
2. По условию может оказаться много записей, то будет ошибка multiple rows in singleton select. Может, нужно проверять Max(TMenID) ?
3. if (:men_id<10000) - здесь двоеточие не надо
4. into :men_ID,Men_action; - а вот здесь нужно к каждой переменной
PS from MenT- круто завернул
Johnmen (2006-04-07 16:24:00) [2]Тут соображать надо после прочтения документации...