2
我有一個表格,其中包含商店中每個商品的單價和其他詳細信息。計算另一個表中另一列的列值
CREATE TABLE Item (Item_id CHAR(4), Description CHAR(40), Sizes CHAR(40), Weight REAL, Unit_price REAL, PRIMARY KEY(Item_id));
另一個包含每個訂單中包含的項目的詳細信息。
CREATE TABLE Order_contains_items (Item_id CHAR(4), Order_no INT, Quantity_ordered INT, Ordered_price REAL, PRIMARY KEY(Item_id, Order_no), FOREIGN KEY(Order_no) REFERENCES Order(Order_no), FOREIGN KEY(Item_id) REFERENCES Item(Item_id));
現在我想計算
Order_contains_items.Ordered_price = Item.Unit_price * Order_contains_items.Quantity_ordered WHERE Order_contains_items.Item_id = Item.Item_id
注意,我希望它是表本身的一部分,而不是一個不同的視圖或查詢。我怎樣才能做到這一點?我研究觸發器和其他機制,但它們是否適用於不同表中的值,特別是在這些約束下?
我試圖根據Column calculated from another column?以下觸發:
CREATE TRIGGER Order_price BEFORE INSERT ON Order_contains_items
FOR EACH ROW BEGIN
SET NEW.Ordered_price = Item.Unit_price * NEW.Quantity_ordered
WHERE NEW.Item_id = Item.Item_i
END;
但它似乎沒有工作
是的,觸發器可以做到這一點。你需要在'INSERT'上計算一個值,如果你允許的話,'UPDATE'。 – HABO
@HABO:我嘗試了以下基於[鏈接](http://stackoverflow.com/questions/5222044/column-calculated-from-another-column) 'CREATE TRIGGER Order_price BEFORE INSERT ON Order_contains_items FOR EACH ROW BEGIN SET NEW.Ordered_price = Item.Unit_price * NEW.Quantity_ordered WHERE NEW.Item_id = Item.Item_i END;' 但它似乎並沒有工作 – akhiljain
你在mysql-server-2005解決了嗎,還是兩個表在不同的數據庫? – HABO