【发布时间】: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