MySQL中的多个if语句触发器

时间:2013-02-13 06:24:54

标签: mysql sql triggers phpmyadmin

如果MySQL触发器中有多个if语句,那么最佳方法是什么?

目前我的SQL看起来像这样:

IF NOT (NEW.status <=> OLD.status) THEN
  {my sql}

ELSEIF NOT (NEW.actual <=> OLD.actual) THEN
  {my sql}
END IF

乍一看,这似乎有效。但是,我注意到当多个(else)if语句为真时,只执行第一个(就像在PHP中一样)。

我怎样才能使用多个if,而不一定是elseif,以便执行多于1个语句?使用相同的操作创建多个触发器是不可能的,至少这是phpMyAdmin显示的。将多个if放在一个触发器中会导致错误。

2 个答案:

答案 0 :(得分:5)

想出来。我没有使用phpMyAdmin中的可视化GUI来创建触发器,而是使用了纯SQL。

所以我使用了这个SQL:

delimiter //
create t1
after update
on my_table
for each row
    begin
        IF (NEW.status <> OLD.status) THEN
            {your sql}
        END IF;

        IF (NEW.actual <> OLD.actual) THEN
            {your sql}
        END IF;     
    end;//
delimiter ;

哪个工作正常。在phpMyAdmin GUI中查找触发器时,我注意到这是因为必须添加beginend;

答案 1 :(得分:-1)

像这样使用:

 IF (NEW.status <> OLD.status) THEN
    <statement>
 ELSEIF (NEW.actual <> OLD.actual) THEN
     <statement>
 END IF;