【发布时间】:2016-01-09 17:10:44
【问题描述】:
我正在使用 Microsoft SQL Server,并且仍在学习。我有两个表,一个产品表和一个订单详细信息表。产品表包含价格,然后订单明细表包含对产品、产品数量和总价的参考。这是两张表:
--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)
);
--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
);
我怎样才能使 order_detail_total 成为 product_price * product_quantity 的计算列?
【问题讨论】:
-
嗨@kingcobra1986,我这里没有sqlserver,但根据msoft 的说法,似乎无法从另一个表创建计算列。但是,您可以创建一个函数来帮助您这样做...stackoverflow.com/questions/6867047/…
-
计算列不能引用其他表。
-
我想您可以为此使用触发器。不过,我个人会在数据库层之上的一层处理这个问题。
-
我支持@TT,您正在尝试的是业务逻辑层问题,而不是数据层问题
-
我这样做有两个原因,我在一个数据库类中,我们只是专注于数据库而不使用任何其他语言或任何东西来计算它,我希望列变得充实。另一个原因只是为了学习。这不适用于任何实际项目。
标签: sql-server tsql