子查询不允许

时间:2015-09-18 06:38:30

标签: sql-server tsql

我试图"自动插入"此表中的MONEY字段,表示产品数量乘以产品价格。我有数量值,但价格将来自外键PRODUCT_ID,但我收到错误消息:

  

在此上下文中不允许使用子查询。只有标量表达式   是允许的。

这是表格。我怎么能这样做"自动插入"?如果这种方式不可能,请告诉我另一种方法。提前谢谢。

CREATE TABLE ORDER_DETAILS
(
NUM_ORDER INT PRIMARY KEY,
PRODUCT_ID VARCHAR(4) NOT NULL,
QUANTIITY INT NOT NULL,
MONEY AS (QUANTITY * (SELECT PRICE FROM PRODUCTS WHERE PRODUCTS.PRODUCT_ID = PRODUCT_ID)),
ORDER_DATE DATETIME NOT NULL DEFAULT GETDATE()
)

2 个答案:

答案 0 :(得分:1)

您应该为此创建一个用户定义的函数。

CREATE TABLE ORDER_DETAILS
(
NUM_ORDER INT PRIMARY KEY,
PRODUCT_ID VARCHAR(4) NOT NULL,
QUANTIITY INT NOT NULL,
MONEY AS dbo.YourFunction(Quntity,ProductId),
ORDER_DATE DATETIME NOT NULL DEFAULT GETDATE()
)

答案 1 :(得分:0)

你不能写这一行:

MONEY AS (QUANTITY * (SELECT PRICE FROM PRODUCTS WHERE PRODUCTS.PRODUCT_ID = PRODUCT_ID))

要自动计算此属性的值,您必须使用以下其中一项:

  1. 触发
  2. 用户定义的功能