|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.05.2010, 14:04 | #1 |
Новичок
Джуниор
Регистрация: 12.04.2010
Сообщений: 2
|
Триггер для Firebird
Помогите написать триггер, при добавлении новой записи в таблицу Expense.
Когда появляется новый расход сотрудником, его нужно вычесть из норм расходов в месяц на один отдел из таблицы Norms_of_expenses, а затем добавить остаток в таблицу Rests. Вот мои наработки CREATE OR ALTER TRIGGER EXPENSE_DEP_REST FOR EXPENSE ACTIVE BEFORE INSERT POSITION 0 AS declare variable ki integer; declare variable nor decimal(8,3); declare variable ns decimal(8,3); declare variable nm integer; declare variable ny integer; declare variable dep integer; declare variable r decimal(8,3); begin if (new.nsum <>0) then begin SELECT e.kinds_id,norm, nsum,nmonth,nyear,d.department_id FROM expense e,norms_of_expenses n, employee em, department d where e.kinds_id = n.kinds_id and extract(month from e.ndate)=n.nmonth and extract (year from e.ndate)=n.nyear and e.employee_id=em.employee_id and em.department_id=d.department_id and em.department_id=n.department_id into :ki,nor,ns,nm,ny,dep; r=nor-ns; begin insert into rests (nmonth,nyear,rest_by_norms,kinds_i d,department_id) values (':nm', ':ny', ':r', ':ki', 'ep'); end end end триггер запускается, но требуемые операции не выполняются |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хранимая процедура для Firebird | Lait1989 | БД в Delphi | 1 | 15.05.2010 11:02 |
DAC компоненты для Interbase(FireBird) | codekick | БД в Delphi | 1 | 21.01.2010 19:34 |
Какие компоненты используете для работы с firebird ? | Alar | БД в Delphi | 3 | 15.10.2009 12:18 |
Как получить ID для новой записи с использованием триггеров?(Firebird) | Paul Hindenburg | БД в Delphi | 20 | 01.06.2008 16:39 |
Триггер? | yulia | БД в Delphi | 9 | 12.05.2007 15:03 |