Предложение where не работает в триггере (перед вставкой), который устанавливает значение для столбца из другой таблицы - PullRequest
0 голосов
/ 16 апреля 2019

Я создаю новый триггер, который наследует значение new.base_price из таблицы с именем stockinfo, в которой содержатся данные companyID и modelID велосипеда.Я хочу унаследовать new.base_price только для введенных данных, поэтому я поставил условие "где", но по какой-то причине оно не работает ...

mysql> create trigger bi_sales
    -> before insert on salerecord
    -> for each row
    -> set
    -> new.base_price = stockinfo.saleprice where new.companyid=stockinfo.companyid AND new.modelid = stockinfo.modelid,
    -> new.price = new.base_price - ((new.discount_in_percent / 100) * new.base_price),
    -> new.loan = new.price - new.downpayment,
    -> new.emi = new.loan / new.loandurationinmonths;
    -> end;//

ОШИБКА 1064 (42000): возникла ошибкав вашем синтаксисе SQL;обратитесь к руководству, соответствующему вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'где new.companyid = stockinfo.companyid И new.modelid = stockinfo.modelid, new' в строке 5

1 Ответ

0 голосов
/ 16 апреля 2019

Помимо не выбора есть и другие проблемы с триггером. Попробуйте

drop trigger if exists bi_sales;
delimiter $$
create trigger bi_sales
   before insert on salerecord
   for each row
   begin
      set new.base_price = (select stockinfo.saleprice from stockinfo where new.companyid=stockinfo.companyid AND new.modelid = stockinfo.modelid);
     set new.price = new.base_price - ((new.discount_in_percent / 100) * new.base_price);
     set new.loan = new.price - new.downpayment;
     set new.emi = new.loan / new.loandurationinmonths;
    end $$

delimiter ;
...