【问题标题】:MySQL Triggers and ProcedureMySQL 触发器和过程
【发布时间】:2014-10-27 05:54:02
【问题描述】:

我有如下三张表:

我编写了一个 MySQL 触发器,用于在 pac 的传递通道发生变化时调用一个过程来更改 mod 的传递通道。两者之间存在多对多关系,即我有 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中运行语句时没有错误,但它不起作用。

我做错了什么?

谢谢

【问题讨论】:

  • 在我身边,所有这些员工都在 Windows 上使用 MySQL 5.6。请检查是否已在 pacs 上创建触发器。
  • 谢谢。它工作正常。我犯了一个愚蠢的错误。

标签: mysql stored-procedures sql-update triggers


【解决方案1】:

实际上这是可行的,我犯了一个愚蠢的错误,直到我发布了问题后才意识到这一点。

错误是我在 MySQL 中运行的实际代码中的 if 语句中使用了错误的字段。

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

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多