2017-09-26 51 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就是這樣,把它改成<>使它工作。 –

相關問題