MySQL Trigger只运行一个IF Query

时间:2017-09-26 03:06:50

标签: mysql triggers

我在引线表上更新行时会运行以下触发器:

BEGIN
    IF NEW.status_id <=> OLD.status_id THEN
        BEGIN
            insert into lead_status
                (lead_id, status_ID)
            values (OLD.id, NEW.status_id);
        END;
    END IF;

    IF NEW.user_id <=> OLD.user_id THEN
        BEGIN
            insert into lead_owner
                (lead_id, staff_ID)
            values (OLD.id, NEW.user_id);
        END;
    END IF;
END

然而,似乎唯一运行的是关于user_id的IF。如果我使用status_id进行更改,则触发器似乎不会运行。

我在这里做错了不能跑吗?保存触发器时,我没有收到任何语法错误。

非常感谢。

1 个答案:

答案 0 :(得分:0)

我已经模拟了与您相同的触发器,并且按预期工作。以下是触发代码

CREATE TRIGGER testTrigger
AFTER UPDATE ON order_data
FOR EACH ROW 
BEGIN
    IF NEW.status_id <> OLD.status_id THEN
        BEGIN
            insert into lead_status
                (lead_id, status_ID)
            values (OLD.id, NEW.status_id);
        END;
    END IF;

    IF NEW.user_id <> OLD.user_id THEN
        BEGIN
            insert into lead_owner
                (lead_id, staff_ID)
            values (OLD.id, NEW.user_id);
        END;
    END IF;
END;

假设主表调用order_data,我已将id_01的status_id从“IN_PROGRESS”更改为“IN”。这是order_data表的结果 enter image description here

这是lead_status表结果。
enter image description here
请通过删除当前触发器重试并使用上面的代码创建。 HTH。