我正在构建一个触发器,当另一个表被更新时,该触发器将更新一个表。但是,由于某种原因,MySql不喜欢其中的if语句。
方案是,有一个名为Group的表,该表具有存储在level1,level2和level3列中的级别标签配置。另一个表“成员资格”存储成员配置及其级别标题。
例如,如果某个成员的标题为level1,并且是新手,并且Group_configuration级别1中的更新从“ novice”更新为“ newbie”,则触发器会将成员标题更新为“ newbie”。这也适用于级别2和级别3。
所以我的触发代码看起来像这样:
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 |
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;
DELIMITER ;
也许有帮助吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句