2014-10-27 64 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语句中使用了错误的字段。

我希望这可以帮助别人有一天。

谢谢