DELIMITER $$
USE `gym`$$
DROP TRIGGER /*!50032 IF EXISTS */ `goods_input_total_amount-updateon-goods_input_price`$$
CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `goods_input_total_amount-updateon-goods_input_price`
AFTER UPDATE ON `goods_input_price`
FOR EACH ROW BEGIN
DECLARE input_price INTEGER;
SELECT price_goods_input_price INTO input_price FROM goods_input_price
WHERE id_goods_input_price=NEW.id_goods_input_price LIMIT 1;
SET new.goods_input_total_amount=goods_input_quantity*input_price;
END;
$$
DELIMITER ;
我收到此错误消息:
Error Code: 1362 Updating of NEW row is not allowed in after trigger
最佳答案
消息非常明确。如果你想更新行,你需要一个before更新触发器:
DELIMITER $$
USE gym$$
DROP TRIGGER `goods_input_total_amount_updateon_goods_input_price`$$
CREATE TRIGGER `goods_input_total_amount_updateon_goods_input_price`
BEFORE UPDATE ON goods_input_price
FOR EACH ROW
BEGIN
DECLARE input_price INTEGER;
SELECT price_goods_input_price INTO input_price
FROM goods_input_price
WHERE id_goods_input_price = NEW.id_goods_input_price
LIMIT 1;
SET new.goods_input_total_amount = goods_input_quantityinput_price;
END; $$
DELIMITER ;
我倾向于将其写为:
BEGIN
SELECT price_goods_input_price
INTO new.goods_input_total_amount
FROM goods_input_price
WHERE id_goods_input_price = NEW.id_goods_input_price
LIMIT 1;
END; $$
关于mysql - 更新table2后如何更新table1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45774402/