如何在table2上更新后更新table1?

时间:2017-08-19 17:25:15

标签: mysql triggers

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 ;

我有以下错误消息:

  

错误代码:1362触发后

中不允许更新NEW行

1 个答案:

答案 0 :(得分:2)

信息很清楚。如果要更新行,则需要之前的更新触发器:

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; $$