2013-11-21 80 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

是的,这就是我会做的感谢很多人 –