![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 02.05.2016
Сообщений: 5
|
![]()
Здравствуйте.
Нужен триггер, который будет пересчитывать стоимость заказа при его 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.... Как быть? Буду очень благодарна за помощь! |
![]() |
![]() |
![]() |
#2 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
![]() Код:
я не совсем в теме, и потестить не могу, но гугл предлагает: Код:
|
![]() |
![]() |
![]() |
#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 |