![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
![]()
Здравствуйте, незнакомцы из разных уголков страны.Кто что может подсказать?
IBConsole существует 3 таблицы : "Menu(BLIUDO, KOLICH)" - меню на день. Здесь вписывается приготовленные блюда в размере N штук. "Raskladka(BLIUDO, NOMER,INGREDIENT,KOLICH)" - здесь хранится название блюда и его ингредиенты (имя и количество, требуемое на приготовление этого блюда) "Sklad(INGREDIENT,CENA,KOLICHESTVO) " - здесь хранятся ингредиенты с указанием их количества на складе. Триггер должен при добавлении в MENU новой записи из таблицы SKLAD вычитать кол-во ингредиентов, ушедших на приготовления блюда на складе. пишу значит вот так: Код:
Dynamic SQL Error SQL error code = -206 Column unknown RASKLADKA.KOLICH Statement: create trigger tr1 for menu active after insert as begin update sklad set sklad.kolichestvo=sklad.kolichestvo-raskladka.kolich*menu.kolich where new.bliudo=raskladka.bliudo; end
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 31.01.2011 в 01:58. |
![]() |
![]() |
![]() |
#2 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
![]()
вот сама база данных.
юзаю InterBase 6. поправка: не ту БД скинул, поэтому её удалил, а файл "проблемной" БД 3 постами ниже.
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 31.01.2011 в 05:12. |
![]() |
![]() |
![]() |
#3 | |
Подтвердите свой е-майл
Регистрация: 19.12.2010
Сообщений: 808
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 29.09.2009
Сообщений: 10
|
![]()
ты уверен, что ту базу скинул? там только таблица klient_t
new.<имя поля> - параметр хранящий значение вводимое в поле, т.к. триггер для операции after insert. (p.s. это не таблица) |
![]() |
![]() |
![]() |
#5 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
![]()
блин, ребят, извиняюсь...Не то скинул.
вот БД. new : это спец переменная, используемая в триггерах, которая хранит только что добавленную запись в любой твоей таблице. В моём случае это MENU.
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 31.01.2011 в 01:56. |
![]() |
![]() |
![]() |
#6 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
![]()
Тут вам стоит подумать на запросом
Код:
Код:
Последний раз редактировалось vovk; 31.01.2011 в 08:03. Причина: чуть вид поправил |
![]() |
![]() |
![]() |
#7 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
![]()
я тоже думал многоуровневым и мудрёным select`ом воспользоваться, но думал есть более простой выход . Не знал, что в триггере нельзя писать <имя таблицы>.<имя столбца>. Спасибо за совет, Vovk.
Если помог, проси поставить минус. Будь оригинален!
|
![]() |
![]() |
![]() |
#8 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
![]()
Да пожалуйста)
Тут просто надо помнить, что запрос он и есть запрос пусть и в теле триггера, и волшебным образом он информацию о других таблицах не получит, триггер он хоть и читерская штука)), но тоже вещь не волшебная. Сам найти таблицу в бд связать её с другой и выбрать записи по условию из 3 таблицы связаной со второй через первую которую обновляем (о как))) он не сможет по крайней мере пока. Относительно new.поле, и old.поле это переменные. PS Я как начал изучать, тоже разок так попыталься сделать. Сказать что я рассчитывал на положительный результат было бы неверно, но так хотелось, что я трясущимися руками ,набрал триггер, и с замиранием сердца думая - "а вдруг ....." пытался скомпилировать. Видно в каждом из нас живёт надежда на чудо)) Последний раз редактировалось vovk; 31.01.2011 в 20:57. |
![]() |
![]() |
![]() |
#9 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
![]()
Спасибо большое, прибольшое!!!!!
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 31.01.2011 в 14:55. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при написании команды для SoftIce | ProgDel | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 06.03.2010 19:16 |
Добавление триггера | flame33 | SQL, базы данных | 0 | 10.01.2010 18:05 |
Создание триггера | Crasty | SQL, базы данных | 1 | 20.11.2009 01:19 |
Ошибка при написании ассемблеровского кода на Визе 6.0 | Познающий | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 03.11.2009 19:09 |