【问题标题】:SQL Field as a query resultSQL 字段作为查询结果
【发布时间】:2013-11-22 08:49:15
【问题描述】:

我有一个餐厅的数据库。项目表 (itemid,itemname,price) 和订单表 (orderid,itemid,quantity,price)。我在订单表中有价格字段,只是因为如果项目表中的价格发生了变化,那么订单价值当然不应该改变。无论如何要自动设定价格吗? 我似乎不能这样做:

    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)
    );

【问题讨论】:

  • 每当您创建新订单时,我都会查看当前价格。在 SQL 中没有干净的方法可以做到这一点,除了 可能 一个仍然丑陋的触发器。
  • 是的,如果您使用的是关系数据库,订单通常是您必须进行一些非规范化的事情。
  • 好的,在我的添加过程中,我必须查找并分配它。没有简单的出路

标签: sql database-design


【解决方案1】:

如果您正在编写唯一将插入新行的应用程序,则在插入时在订单行上设置价格。

否则,请考虑一个触发器,该触发器将在任何地方的任何人将一行插入该表时执行。它可以在记录写入数据库之前查找商品价格并在订单上设置值。

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多