2013-11-21 116 views
1

我有一個餐館的數據庫。項目的表格(itemid,itemname,price)和訂單表格(orderid,itemid,quantity,price)。我在訂單表中有價格字段,只是因爲如果項目表中的價格發生了變化,訂單價值當然不應該改變。無論如何要自動化的價格設置? 我似乎無法做到這一點:SQL字段作爲查詢結果

CREATE TABLE ORDER(
    OrderID INT IDENTITY(1,1) PRIMARY KEY, 
    ItemID INT NOT NULL, 
    Quantity INT NOT NULL, 
    Price MONEY AS (SELECT Price FROM ITEM) 
    ); 
+0

無論何時創建新訂單,我都會查看當前價格。在SQL中沒有乾淨的方式來做這件事,除非*可能*一個仍然難看的觸發器。 –

+0

Yup命令通常就是您在使用關係數據庫時必須進行非規範化的事情。 – phoebus

+0

好吧,在我的添加過程中,我不得不查找並分配它。沒有簡單的出路 –

回答

0

如果你正在寫的唯一的應用程序(一個或多個),這將插入新行,然後設置命令行的價格,當你插入。

否則,請考慮一個觸發器,只要任何人在任何地方將某行插入到該表中時,該觸發器就會執行。它可以在將記錄寫入數據庫之前查找物料價格並設置訂單上的值。

+0

是的,這就是我會做的感謝很多人 –