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行
答案 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; $$