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

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

Никто не подскажет, в чем здесь логическая ошибка? [D6]


Страницы:   1 2

}|{yk ©   (2004-02-19 16:57:00) 

Триггер записывает не необходимое значение, а затирает текущее
CREATE OR REPLACE TRIGGER APP_BANK_A_INSERT
BEFORE
INSERT
ON APP_BANK
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
declare
begin
   update app_plateg set app_plateg.summa_free=app_plateg.summa_free-:new.summa where app_plateg.plat_id=:new.plat_id;
end;
/
Он должен при добавлении записи в таблицу app_bank уменьшать на соответствующее значение поле summ_free в таблице app_plateg/ Но вместо этого он затирает значение в этом поле. В чем глюк?


Guest   (2004-02-19 17:35:00) [21]

[4] }|{yk ©   (19.02.04 17:32)

Перевожу намек RME. Из двух операндов хотя бы один почему-то NULL.


}|{yk   (2004-02-19 17:32:00) [22]

Если бы select a.summa_free into summ from app_plateg a where a.plat_id=:new.plat_id;
не давало результатов, я бы получил ошибку no_data_found ее нет, но и результата тоже


}|{yk   (2004-02-19 17:30:00) [23]

Да нет
Если в триггер добавить
select a.summa_free into summ from app_plateg a where a.plat_id=:new.plat_id;
то summ будет имет пустое значение
да и какой смысл проверять - app_plateg и app_bank имеют связь 1-m
так что summ_free обязательно будет иметь значение, как и  :new.summa


Reindeer Moss Eater   (2004-02-19 17:18:00) [24]

Подсказка

declare
 i integer;
 n integer;
 r number;
begin
 i:=1;
 n:=null;
 r := i - n;
 if r is null then
  dbms_output.put_line('null');
 else
  dbms_output.put_line(to_char(r));
 end if;
end;


Guest   (2004-02-19 17:01:00) [25]

Попробовать удалить "old as old"?


Страницы:   1 2

Наверх

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