Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 15:46   #1
Babur4iK
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 55
По умолчанию Триггер

Имеется таблицы Ингредиенты,Ингредиенты в блюде и Блюда


Необходимо создать триггер , посчитать калорийность и вес блюда полностью блюда в целом, а также триггер считает кол-во калорий в ингридиентах .

Триггер который считает кол-во работает:

Create trigger CountCaloriesIngr on Ingridients after insert
as Declare
@Belki as float,
@Fat as float,
@Ugle as float,
@Callor as float,
@ID as integer

select @Belki=proteins, @Fat=fats,@Ugle=carbohydrates, @ID=ID_ingridients
from inserted

begin
set @Callor=4*@Fat+9*@Ugle+4*@Belki
end

update Ingridients
set calories=@Callor
where @ID=ID_ingridients

А вот триггер который считает калорийность и вес блюда полностью блюда в целом не работает,посмотрите пожалуйста в чем может быть ошибка :

create trigger CountCalloriesFood on Ingridients_in_food after insert
as
Declare
@cal_ingr as float,
@net_weight as float,
@cal_food as float,
@ID_food as int,
@ID_ingr as int,
@prodactWeight as float

select @ID_food=ID_food, @net_weight=Net_weight, @ID_ingr=ID_ingridients
from inserted

select @cal_ingr=calories
from Ingridients
where ID_ingridients=@ID_ingr

select @cal_food=Full_calories, @prodactWeight=Finish_weight_of_foo d
from Foods
where ID_food=@ID_food

begin
set @prodactWeight=@prodactWeight+@net_ weight
set @cal_food=@cal_food+@net_weight/100*@cal_ingr
end

update Foods
set Full_calories=@cal_food, Finish_weight_of_food=@prodactWeigh t
where ID_food=@ID_food
Изображения
Тип файла: jpg Безымянный.jpg (60.2 Кб, 21 просмотров)
Babur4iK вне форума Ответить с цитированием
Старый 08.11.2012, 16:00   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А вот триггер который считает калорийность и вес блюда полностью блюда в целом не работает
Расшифруйте. Да, если для INSERT что-то считаете, то для UPDATE и DELETE тоже нужно. Или таблицы не обновляются? Похоже MS SQL, тогда замечу, что для групповой операции триггер отработает один раз, а не для каждой записи в отдельности. Это совершенно не учитывается
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.11.2012, 16:13   #3
Babur4iK
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 55
По умолчанию

Надо чтоб триггер рассчитал, общий вес блюда и общую калорийность блюда !

Последний раз редактировалось Babur4iK; 08.11.2012 в 16:43.
Babur4iK вне форума Ответить с цитированием
Старый 08.11.2012, 16:28   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Babur4iK Посмотреть сообщение
Надо чтоб триггер рассчитал, общий вес блюда и общую калорийность блюда !
Что происходит - вываливается ошибка (какая) или считает не правильно, тогда покажите как нужно и что на самом деле считает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Триггер в MySQL nadan Помощь студентам 0 11.06.2011 22:04
Триггер andresan SQL, базы данных 0 16.05.2011 16:29
Триггер Neymexa SQL, базы данных 1 01.04.2010 18:50
триггер veter_s_morya SQL, базы данных 10 06.10.2008 21:58
Триггер? yulia БД в Delphi 9 12.05.2007 15:03