2017-06-04 59 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