Alexandr Kochmin wrote:
это ibexpert умный такой, по-моему. Или кэш метаданных.
Yaffil тут нипричем.
Да в том-то и дело, что пробовал не только из эксперта, но и из своей
программы, которая таким разумом не наделена.
И кэш тут ни причем: старый триггер цеплял данные, которые были до
апдейта, и при повторном апдейте должен был бы выставить верные
значения, но в том-то и дело, что второй раз он не вызывался. Меняешь
любой поле - срабатывает, присваиваешь полю то же значение, которое в
нем уже сидит (не меняя другие поля) - не срабатывает.
Триггер before update (в упрощенном виде):
begin
select max(F2)/7 from T1 where F1=NEW.F1 into NEW.F3;
end
Т.е. меняю F2 -> должно измениться F3, но т.к. это before, то если я
уменьшаю F2, и до этого F2 было максимальным, то в F3 попадает
OLD.F2/7, а не NEW.F2/7.
Повторная команда
update T1 set F2=F2 должна была бы исправить F3 -- ан нет :-(