首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个IF语句的MySQL触发器

具有多个IF语句的MySQL触发器
EN

Stack Overflow用户
提问于 2020-06-03 21:02:13
回答 1查看 152关注 0票数 0

我是个新手,似乎找不到和我类似的情况,我相信答案很简单。

我有两列,一列是预定义的牌照(“牌照”),另一列是用户输入的牌照(“企业牌照”)。

我制作了第三列,它将是一种错误检查列,它的值将由触发器输入。基本上,如果输入的车牌与预定义的车牌相同,则将第三列设置为0,如果输入的车牌为空(尚未输入任何内容)(将其设置为1,如果两者中都有值但它们不匹配,则将其设置为2。但我一直收到脚本错误。我不确定是我的语法还是我做错了。

感谢大家的帮助!

代码语言:javascript
复制
 CREATE TRIGGER MatchPlateOnUPDATE 
 BEFORE UPDATE ON wp_wpdatable_3
 FOR EACH ROW 
 BEGIN
 IF (NEW.enterlicenseplate is NULL) THEN
 UPDATE wp_wpdatatable_3
    SET MatchingPlates = 0;

  ELSEIF (NEW.enterlicensplate = New.licenseplate) THEN
 UPDATE wp_Wpdatatable_3
    SET MatchingPlates = 1;
ELSE UPDATE wp_Wpdatatable_3
SET MatchingPlates = 2;
END
EN

回答 1

Stack Overflow用户

发布于 2020-06-03 21:14:23

if语句的问题在于您遗漏了结束end if;

但是还有更多的问题:触发器不能操作它所触发的表-即使它可以,查询基本上也会更新表中的所有行,因为您的update没有where子句。

这里只需要修改即将插入的记录中matchingPlates列的值:

代码语言:javascript
复制
delimiter //

create trigger matchplateonupdate 
before update on wp_wpdatable_3
for each row 
begin
    if new.enterlicenseplate is null then
        set new.matchingplates = 0;
    elseif new.enterlicensplate = new.licenseplate then
        set new.matchingplates = 1;
    else 
        set new.matchingplates = 2;
    end if;
end;
//

delimiter ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62173492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档