如何创建引用另一个表中另一列的计算列?

时间:2016-01-09 07:32:44

标签: sql-server tsql

我正在使用Microsoft SQL Server,我还在学习。我有两个表,一个产品表和一个订单详细信息表。产品表包含价格,然后订单详细信息表包含产品参考,产品数量和总价格。以下是两个表格:

list_fields()

我怎样才能使order_detail_total成为controller的计算列?

1 个答案:

答案 0 :(得分:1)

感谢@Andy K,我提出了这个解决方案:

--Create Product Table
CREATE TABLE Products.Product  
(
    product_id          INT             NOT NULL    PRIMARY KEY IDENTITY,
    product_name        VARCHAR(40)     NOT NULL,
    product_desc        VARCHAR(5000),
    product_price       SMALLMONEY      NOT NULL    CHECK (product_price >= 0)
);
GO

--Create a function to calculate the order details total
CREATE FUNCTION Orders.calcOrderDetailTotal(@quantity INT, @productId INT)
RETURNS MONEY
AS
BEGIN
    DECLARE @price SMALLMONEY
    SELECT @price = product_price FROM Products.Product AS TP 
           WHERE TP.product_id = @productId
    RETURN @quantity * @price
END
GO

--Create Order Details Table
CREATE TABLE Orders.Order_detail 
(
    order_detail_id     INT             NOT NULL    PRIMARY KEY IDENTITY,
    product_id          INT             NOT NULL,
    product_quantity    INT             NOT NULL    CHECK (product_quantity >= 0),
    order_detail_total  MONEY           NOT NULL,

    FOREIGN KEY (product_id)        REFERENCES Products.Product
);

这对我在我创建的测试数据库上起作用。