2017-09-26 69 views
0

我有一行时在引线表更新上运行以下触发:MySQL的触发器只运行一个,如果查询

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 

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

难道我做错了什么在这里它不跑?保存触发器时,我没有收到任何语法错误。

非常感谢。

回答

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,我从“IN_PROGRESS”改变STATUS_ID为“IN”的ID“01”。这是order_data表结果。
enter image description here

这是lead_status表结果。
enter image description here
请再次尝试通过删除您当前的触发,并使用上面的代码。 HTH。

+1

的区别是一个不等于需要时,OP已编码的空安全平等的吗? –

+0

@P.Salmon就是这样,把它改成<>使它工作。 –