2017-08-19 76 views
0
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 ; 

我有這樣的錯誤消息:如何在table2更新後更新table1?

錯誤代碼:新行的1362更新觸發

+0

編輯您的問題 – Noob

回答

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

錯誤代碼:1054 未知列在 'NEW' 'goods_input_total_amount' 這是萬一 – Karen

+0

「之前」 和最後一行是如下 SET new.goods_input_total_amount = goods_input_quantity * input_price; – Karen

+0

@凱倫。 。 。觸發器的名稱不應該有連字符。 –

相關問題