Mysql 触发器创建中的错误以及如何优化它

Mysql 触发器创建中的错误以及如何优化它,mysql,triggers,Mysql,Triggers,请告诉我代码有什么问题。无法纠正错误 DELIMITER $$ CREATE TRIGGER update_status BEFORE Update ON listing_basic_new_updated FOR EACH ROW if new.processing_status is not null then begin SET new.rep_status = New.processing_status; end; elseif new.televe

请告诉我代码有什么问题。无法纠正错误

DELIMITER $$
CREATE TRIGGER update_status  BEFORE Update ON listing_basic_new_updated 
FOR EACH ROW
 if new.processing_status is not null 
    then begin
    SET new.rep_status = New.processing_status;
    end; 
  elseif new.televeri_status is not null 
    then begin
    SET new.rep_status = New.televeri_status;
    end; 
  elseif new.verification_status is not null 
    then begin
    SET new.rep_status = New.verification_status;
    end;
end if;
END$$
DELIMITER ;

我认为您缺少一个与结尾处的
结尾匹配的
开始

DELIMITER $$
CREATE TRIGGER update_status  BEFORE Update ON listing_basic_new_updated 
FOR EACH ROW
BEGIN
 if new.processing_status is not null 
    then begin
    SET new.rep_status = New.processing_status;
    end; 
  elseif new.televeri_status is not null 
    then begin
    SET new.rep_status = New.televeri_status;
    end; 
  elseif new.verification_status is not null 
    then begin
    SET new.rep_status = New.verification_status;
    end;
end if;
END$$
DELIMITER ;
我想你可以把它全部换成

SET new.rep_status = COALESCE(new.processing_status, new.televeri_status,
                           new.verification_status, new.rep_status);

:“返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。”

在最后一行显示错误。提示:如果您收到错误消息,即使您不理解,将其包含在您的问题中也可以极大地帮助他人帮助您。您的权利!它起作用了。。我还可以问你如何优化代码吗?在我的答案底部添加了一个建议-我认为这是等效的。