2014-10-27 32 views
0

我有三個表如下所示:MySQL的觸發器和程序

enter image description here

我已經寫一個MySQL觸發器調用的過程來改變模的輸送通道每當的PAC變化輸送通道。這兩者之間有多對多的關係,那就是我有pac_mods表。

觸發:

DELIMITER $$ 
CREATE TRIGGER pac_delivery_channel_change_trigger AFTER UPDATE ON pacs 
FOR EACH ROW 
BEGIN 
    IF NEW.delivery_channel <> OLD.delivery_channel THEN 
     CALL updateMods(Old.id, New.delivery_channel); 
    END IF; 
END;  
$$ 

而且程序:

DELIMITER $$ 
CREATE PROCEDURE updateMods(IN pacID INT, IN newDeliveryChannelID INT) 
BEGIN 
    UPDATE mods md  
    INNER JOIN  
    pac_mods pmds ON pmds.mod_id = md.id  
     SET md.delivery_channel = newDeliveryChannelID 
     WHERE pmds.pac_id = pacID; 
END; 
$$ 

有當我運行在MySQL中的語句沒有錯誤,但它不工作。

我會做什麼錯?

感謝

+0

在我身邊,所有這些員工在Windows上的MySQL 5.6上工作。請檢查觸發器是否已在pacs上創建。 – 2014-10-27 06:37:40

+0

謝謝。它工作正常。我犯了一個愚蠢的錯誤。 – 2014-10-27 08:39:36

回答

0

其實這個作品,我犯了一個愚蠢的錯誤,才知道,之後我就已經公佈的問題。

錯誤是在我在MySQL中運行的實際代碼中的if語句中使用了錯誤的字段。

我希望這可以幫助別人有一天。

謝謝