此问题涉及两个表:Register(eid,sid,价格,评分)和Event(eid,ename,edescription,edate,memprice,nonmemprice,maxpeople)。

我想创建一个用于监视注册的触发器,如果​​任何事件的注册数量超过该事件允许的最大人数的80%,我们将使该事件的非会员价格提高50%。

到目前为止,我有这样的事情

delimiter//
create trigger price_change
after insert on Register for each row begin
      DECLARE counts INT;
      DECLARE maxpeople INT;
      set counts = (select count(sid) from Register
                   JOIN Event ON Register.eid = Event.eid
                   where eid = new.eid);
      set maxpeople = (select maxpeople from Event where Event.eid =
                       new.eid);
      if counts >= 0.8 * maxpeople
      then
          update Event set nonmemprice = nonmemprice * 1.5 where eid
          = new.eid;
      end if;
end//

delimiter;


我仍在学习如何编写触发器,最终得到了这个触发器。我试图将其添加到MySQL中,但它说在此触发器的各处基本上都存在语法错误。我真的很困惑如果有人帮助我,将不胜感激。

最佳答案

错误一开始就正确。之间使用空格:

delimiter //
         ^--------------here


在课程结束时:delimiter ;

关于mysql - 为什么此mysql触发器语法错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52793896/

10-11 10:18