我正在使用 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
?
最佳答案
感谢@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
);
这在我创建的测试数据库上对我有用。
关于sql-server - 如何创建一个计算列来引用另一个表中的另一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690919/