为什么这个mysql触发器语法是错误的?
Why is this mysql trigger syntax is wrong?
本题涉及两个表:Register(eid, sid, price, rating)和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 中,但它说这个触发器基本上到处都有语法错误。我真的很困惑。如果有人帮助我,我将不胜感激。
错误就在开头。在两者之间使用 space:
delimiter //
^--------------here
当然最后也是:delimiter ;
本题涉及两个表:Register(eid, sid, price, rating)和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 中,但它说这个触发器基本上到处都有语法错误。我真的很困惑。如果有人帮助我,我将不胜感激。
错误就在开头。在两者之间使用 space:
delimiter //
^--------------here
当然最后也是:delimiter ;