1

我很享受 MySQL 所能做的一切。我想了解如何使用 MySQL 触发器来更新 MySQL 列的总成本,其中 UNITS * PRICE 将(当然)等于总成本。

发票表包括(价格、单位、总成本)

    CREATE TRIGGER TRG_TOTAL_COST 
    AFTER INSERT ON INVOICE
    FOR EACH ROW 
    BEGIN 
    --1) Get the TOTAL
    SELECT TOTAL_COST from INVOICE
    --2) Compute total
    TOTAL_COST= UNITS * 
    PRICE; 
    END;
4

1 回答 1

0

虽然我不确定这是非常好的数据库设计,但您可以通过以下方式轻松完成此操作

CREATE TRIGGER TRG_TOTAL_COST BEFORE INSERT ON INVOICE FOR EACH ROW
SET NEW.TOTAL_COST = NEW.UNITS * NEW.PRICE

但我不明白你为什么要在触发器中这样做?您在插入时拥有所需的所有数据,因此您可以直接在插入时完成产品。

或者,除非您有充分的理由真正想要存储它,否则为什么不直接省略可能冗余的列并计算您选择的产品?

于 2012-11-04T02:28:41.533 回答