mysql触发器

hsgswve4  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(347)

我是新手,似乎找不到类似的情况,我相信答案很简单。
我有两列,一列是预定义的licenseplate(“licenseplate”),另一列是用户输入的licenseplate(“enterlicenseplate”)。
我做了第三列,这将是一种错误检查列,它的值将由触发器输入。基本上,如果输入的车牌与预定义的车牌相同,则将第三列设置为0,如果输入的车牌为空(尚未输入任何内容)(将其设置为1,如果两者中都有值且不匹配,则将其设置为2)。但我总是会遇到脚本错误。不知道这是我的语法,还是我把这一切都搞错了。
谢谢你的帮助!

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
ocebsuys

ocebsuys1#

你的问题是 if 声明是你错过了结束语 end if; .
但还有更多的问题:触发器不能对它所触发的表进行操作——即使可以,查询也基本上会更新表中的所有行,因为 update 我们没有 where 条款。
在这里,您只需要修改列的值 matchingPlates 在即将插入的记录中:

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 ;

相关问题