2017-06-04 87 views
-1

在这里,我的表像这样从另一列插入数据 “后触发插入”

目的地:

|id_dest | price | 
    |  1 |2000 | 
    |  2 |100 | 
    |  3 |1000 | 

项目:

|id_item | weight | id_dest |total(weight*destination.price) | 
    |  1 |  3 |  2 | 

触发应该

|id_item | weight | id_dest |sum(weight*destination.price) total | 
    |  1 |  3 |  2 |300 

查询如何触发应该是?

+1

为什么不使用生成的列? https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html – Barmar

+0

SO不是免费的编码服务。你必须尝试自己解决问题。如果无法正常工作,请发布您尝试的内容,我们会帮助您解决问题。 – Barmar

+0

生成的列不起作用,因为只能使用来自同一行的列。 –

回答

0
CREATE TRIGGER trigger_name 
    BEFORE INSERT ON item 
    FOR EACH ROW 
BEGIN 
    UPDATE item 
    SET total = (SELECT d.price *, NEW.weight 
       FROM destination d 
       WHERE d.id_dest = NEW.id_dest) 
    WHERE id_item = NEW.id_item; 
END 
+0

您无法''更新'您定义触发器的表格。但是没有必要这样做。也不需要JOIN。它可能只是'SET NEW.total = SELECT d.price * NEW.weight FROM destination d WHERE d.id_dest = NEW.id_dest;'。但是你只能在'BEFORE INSERT'触发器中做到这一点。 –

+0

而且正如我在对问题的评论中所写的:您无法将来自其他表格的数据用于生成的列。 –

+0

@PaulSpiegel好的,谢谢,我已经根据你的见解更新了我的答案 – Alon