我构建了一个触发器,用于在另一个表得到更新时更新表。但是,出于某种原因MySql不喜欢它里面的if语句。以下if语句在MySql触发器中出现了什么问题
这种情况是,存在一个名为Group的表,该表具有存储在level1,level2和level3列中的级别标签配置。另一个表(Membership)用其级别标题存储成员配置。
例如,如果有一个成员有level1标题,新手,并且Group_configuration level1中有一个从'新手'更新为'newbie'的更新,触发器会将成员标题更新为'newbie'。这也适用于level2和level3。
所以我的触发代码如下所示:
CREATE TRIGGER update_member_rank_label AFTER UPDATE ON `group`
FOR EACH ROW
begin
if (NEW.level1 <> OLD.level1) then
UPDATE membership set level = NEW.level1 where level=OLD.level1 and gid=old.id;
else if (NEW.level2 <> OLD.level2) then
UPDATE membership set level = NEW.level2 where level=OLD.level2 and gid=old.id;
else if (NEW.level3 <> OLD.level3) then
UPDATE membership set level = NEW.level3 where level=OLD.level3 and gid=old.id
end if;
end;
,但我不断收到此错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5
任何想法我在哪里错过?
关于
在定义之前是否有'delimiter'声明? – 2014-09-30 12:51:41
不,这是问题 – ethereal1m 2014-09-30 18:20:13