0

コードの何が問題なのか教えてください。バグを修正できません

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 ;
4

1 に答える 1

1

BEGIN最後にあなたに一致するa が欠けていると思いますEND

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);

COALESCE: "リスト内の最初の非 NULL 値を返します。非 NULL 値がない場合は NULL を返します。"

于 2013-04-18T06:31:07.763 に答える