|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.11.2016, 20:50 | #1 |
Регистрация: 02.05.2016
Сообщений: 5
|
Firebird/IBExpert триггер
Здравствуйте.
Нужен триггер, который будет пересчитывать стоимость заказа при его Update или Insert. Причем некоторые данные нужно взят из других, связанных таблиц. Вот такой ЗАПРОС работает, считает. select orderr.tirag * (material.price_material + print_kind.price_print_kind) from orderr,material, print_kind where material.id_material = orderr.id_material and print_kind.id_print_kind = orderr.id_print_kind and orderr.id_order = 1 Вот такой ТРИГГЕР компилируется без проблем. CREATE trigger orderr_biu0 for orderr active before insert or update position 0 AS begin update orderr set price = (select new.tirag * (material.price_material + print_kind.price_print_kind) from orderr,material, print_kind where material.id_material = new.id_material and print_kind.id_print_kind = new.id_print_kind and orderr.id_order = new.id_order); end НО при манипуляциях с orderr выводит ошибочки: --------------------------------------- Too many concurrent executions of the same request. Too many concurrent executions of the same request. At trigger 'ORDERR_BIU0' line: 5, col: 1 At trigger 'ORDERR_BIU0' line: 5, col: 1 At trigger 'ORDERR_BIU0' line: 5, col: 1.... Как быть? Буду очень благодарна за помощь! |
16.11.2016, 22:05 | #2 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
Код:
я не совсем в теме, и потестить не могу, но гугл предлагает: Код:
|
17.11.2016, 10:40 | #3 |
Регистрация: 02.05.2016
Сообщений: 5
|
На ваш вариант тоже ругается(
Поэтому в состоянии отчаяния начала пробовать писать всякую ерунду. И, о чудо, вот это работает: CREATE OR ALTER TRIGGER ORDERR_BIU0 FOR ORDERR ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS begin new.price = (select new.tirag * (material.price_material + print_kind.price_print_kind ) from material, print_kind, orderr where ((material.id_material = new.id_material) and (print_kind.id_print_kind = new.id_print_kind)) and (orderr.id_order = 1)); end Спасибо!) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
создать Trigger IBExpert, Firebird 2.5 | Lessy22 | SQL, базы данных | 3 | 03.11.2014 17:39 |
Начало работы Firebird + Delphi + IBExpert | Uuuux | БД в Delphi | 4 | 20.07.2010 11:32 |
Триггер для Firebird | Lait1989 | Помощь студентам | 0 | 16.05.2010 14:04 |
IBExpert Firebird и Delphi | power61RUS | БД в Delphi | 15 | 09.12.2009 08:33 |
Редактирование с IBQuery. C++, IBExpert+FireBird | Striderr | Помощь студентам | 1 | 22.11.2009 18:41 |